问题描述
我有一个网站,在该网站上,某些报告是通过PSQL ODBC Source使用SQL运行的。 SQL运行时间超过30秒的任何报告似乎都超时了!
我尝试修改PostgreSQL中的statement_timeout
设置,但这没有帮助。我还试图在ODBC数据源管理器中设置语句超时,但这也没有帮助。
请问有人为什么语句超时只会影响Web会话而没有其他影响?
网络日志和PostgreSQL数据库日志中显示的错误如下:
16:33:16.06 System.Data.Odbc.OdbcException (0x80131937): ERROR [57014] ERROR: canceling statement due to statement timeout;
我认为问题不在于PostgreSQL配置文件本身中的语句超时设置。我之所以这样说,是因为,在PGAdmin中运行查询时,我没有得到30秒的语句超时,只有在网站上运行报表时才得到超时。该网站通过PSQLODBC驱动程序连接到PostgreSQL数据库。
尽管如此,我确实尝试在PostgreSQL配置文件中设置语句超时,并将语句超时设置为90秒,并且此更改对报告没有影响,它们在30秒后仍然超时(更改被应用为show statement_timeout;
确实显示了更新后的值)。其次,我尝试通过ODBC数据源管理员数据源选项编辑连接设置,并使用以下命令在此处设置语句超时:SET STATEMENT_TIMEOUT TO 90000
已应用更改,但没有再次产生影响,该语句仍保持超时。
我还尝试通过运行类似于以下内容的查询来更改用户语句超时:
Alter User "MM" set statement_timeout = 90000;
这再次没有影响。 Web会话日志显示以下内容:
21:36:32.46 Report SQL Failed: ERROR [57014] ERROR: canceling statement due to statement timeout;
Error while executing the query
21:36:32.46 System.Data.Odbc.OdbcException (0x80131937): ERROR [57014] ERROR: canceling statement due to statement timeout;
Error while executing the query
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle,RetCode retcode)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior,String method,Boolean needReader,Object[] methodArguments,SQL_API odbcApiMethod)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior,Boolean needReader)
at System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Odbc.OdbcCommand.ExecuteReader()
at Path.PathWebPage.SQLtoJSON(String strSQL,Boolean fColumns,Boolean fFields,String strODBC,Boolean fHasX,Boolean fHasY,Boolean fIsChart,String strUser,String strPass)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)