Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结果中的MSSQL+ODBC+PHP=0行_Php_Sql Server_Odbc_Pivot_Freetds - Fatal编程技术网

结果中的MSSQL+ODBC+PHP=0行

结果中的MSSQL+ODBC+PHP=0行,php,sql-server,odbc,pivot,freetds,Php,Sql Server,Odbc,Pivot,Freetds,我通过php+LinuxODBC使用远程MSSQL库。一切都很好,但今天我用SET+PIVOT编写了查询,结果出现了错误: [unixODBC][FreeTDS][SQL Server]SELECT failed because the following SET options have incorrect settings: 'ANSI_NULLS, QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDIN

我通过php+LinuxODBC使用远程MSSQL库。一切都很好,但今天我用SET+PIVOT编写了查询,结果出现了错误:

[unixODBC][FreeTDS][SQL Server]SELECT failed because the following SET options have 
incorrect settings: 'ANSI_NULLS, QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NULL,
ANSI_WARNINGS, ANSI_PADDING'. Verify that SET options are correct for use with indexed views 
and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or 
XML data type methods and/or spatial index operations.
我试图在etc上写SET ANSIU NULLS,但它不起作用,结果中有0个字段。 通过MSSQL studio直接在服务器上执行相同的查询非常有效。 知道哪里会有问题吗? 谢谢

更新: freetds.conf

[syserver]
host =192.168.1.200
port = 1433
tds version = 7.0
AnsiNPW=YES
QuotedID=YES
odbc.ini

[sy_odbc]
Driver = FreeTDS
Description  = ODBC connection via FreeTDS
Trace = No
Servername = syserver
Database = Insy
odbcinst.ini

[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
在我得到tds version=6.0之前,在将其更改为7.0之后,所有错误(如ANSI_NULLS)都消失了,但结果中仍然有0行。AnsiNPW=是,QuotedID=是,对我什么都不做。如果在简单查询的结果中尝试将版本更改为8.0,我有??????????。odbc.ini中的TDS_version=7.0也不做任何事情

我的问题。 我的连接字符串是:$conn=odbc\u connect'sy\u odbc','t','t'

更新2: 当我将TDS_版本更改为7.0或7.2时,我的一些php页面停止工作,因此我将其返回到6.0。 你建议的连接字符串对我不起作用。完全我已经用了一年多了,在那之前还不错 6.0版本的问题查询错误日志在这里我们有ANSI_NULLS等警告
7.0版问题查询的错误日志没有警告,但结果中有0行

我还可以想到两件事:

1您的连接字符串。表示您的连接字符串应如下所示:

$conn = odbc_connect('Driver={sy_odbc};Server=192.168.1.200;Database=Insy', $username, $password);
所以我想先试试,看看是否有帮助

2当ODBC连接出现问题时,应打开日志记录,以便捕获错误消息。为此,请在/etc/odbcinst.ini文件中添加以下行:

[ODBC]
Trace     = yes
TraceFile = /tmp/odbc.log

如果您的查询仍然不起作用,请编辑您的问题并添加odbc.log文件中的输出,假设其中有错误消息。

可能会对您有所帮助。如果这还不能解决问题,我建议更改freetds.conf中的tds版本值和/或odbc.ini中的tds_版本值。如果这些都不起作用,请使用完整的freetds.conf、odbcinst.ini、odbc.ini、您试图执行的SQL语句以及显示如何连接到数据库的代码更新您的问题。@BennyHill感谢您的关注。我已经更新了我的帖子。很抱歉,Sergii,我没主意了:-当你的TDS版本为7.0时,我在日志中没有看到错误消息。我假设您正在检查odbc_exec语句的返回值,它不是===FALSE?如果返回FALSE,您应该执行odbc_errormsg。@BennyHill,无论如何,谢谢您的帮助。实际上,post的第二段是echo odbc_errormsg;的结果:我已经试过你的建议,请查看更新结果。