我在开发服务器上为 SQL Server 使用 Microsoft 的 ODBC 驱动程序(版本 17)。在连接池关闭的情况下,应用程序的运行速度令人无法接受。如果我打开连接池,应用程序运行得更快,但是一个查询量特别大的页面成功执行了大约五个查询,然后死掉了
PHP Fatal error: Incorrect SQLSTATE given to is_truncated_warning
这是我的 odbcinst.ini,以防有帮助
[ODBC]
Pooling=Yes
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-17.0.so.0.5
UsageCount=1
CPTimeout=120
我试过增加连接数,但没有明显效果。
我已尝试使用谷歌搜索错误并通读 the issues on Github ,但似乎没有其他人遇到过这种情况。
另一条可能有帮助的信息:应用程序在 IIS 上使用 PHP5.6 和 FreeTDS 运行良好(快速,使用池化)。我希望能够在 Linux 上迁移到更新版本的 PHP。
最佳答案
如果您正在检索长度超过 256 个字符的字段,此特定驱动程序有时会发生这种情况。有两种方法可以解决它:
将字段限制为 256 个字符。这并不总是可行的,但有时人们决定做一些事情,比如用 STUFF (( ... FOR XML PATH('') ), 1, 1, '').
避免使用您自己的函数包装对数据库的直接调用。我发现只有在我自己的函数中包含对 sqlsrv_query 等函数的调用时,我才会遇到这个问题,以便于使用。直接调用 sqlsrv_...() 函数似乎总是有效。
如果有帮助, fatal error 总是由调用 sqlsrv_fetch_object() 触发。
关于php - "Incorrect SQLSTATE given to is_truncated_warning."在 Debian Linux 中使用 PHP 和 SQLSRV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48638113/