PHP中的FreeTDS错误:传入的表格数据流(TDS)远程过程调用(RPC)协
发布时间:2020-12-13 16:19:42 所属栏目:PHP教程 来源:网络整理
导读:我必须使用ODBC从Arch Linux连接到MSSQL服务器. 我使用FreeTDS,而使用isql,它正在工作: isql sqlexpress dev Dev 但不是在PHP中. 我在交互模式下使用PHP: PHP $conn = odbc_connect("sqlexpress",'dev','Dev');PHP $a=odbc_exec($conn,'SELECT * FROM meas
我必须使用ODBC从Arch
Linux连接到MSSQL服务器.
我使用FreeTDS,而使用isql,它正在工作: isql sqlexpress dev Dev 但不是在PHP中. PHP > $conn = odbc_connect("sqlexpress",'dev','Dev'); PHP > $a=odbc_exec($conn,'SELECT * FROM measures;'); PHP Warning: odbc_exec(): SQL error: [FreeTDS][SQL Server]The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 1 (""): Data type 0x00 is unknown.,SQL state 37000 in SQLExecDirect in php shell code on line 1 Warning: odbc_exec(): SQL error: [FreeTDS][SQL Server]The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 1 (""): Data type 0x00 is unknown.,SQL state 37000 in SQLExecDirect in php shell code on line 1 我搜索了很多,但我找不到任何解决方案(甚至是有同样问题的人). /etc/odbc.ini: [sqlexpress] Server = 192.168.10.39 Port = 1433 Driver = FreeTDS Database = capture UserName = dev Password = Dev /etc/odbcinst.ini: [FreeTDS] Description = FreeTDS driver Driver = /usr/lib/libtdsodbc.so Setup = /usr/lib/libtdsS.so Trace = Yes TraceFile = /tmp/freetds.log FileUsage = 1 UsageCount = 1 祝你今天愉快! 解决方法
这是我从Ubuntu连接到MSSQL数据库的工作配置文件:
/etc/odbc.ini # Define a connection to the MSSQL server. # The Description can be whatever we want it to be. # The Driver value must match what we have defined in /etc/odbcinst.ini # The Database name must be the name of the database this connection will connect to. # The ServerName is the name we defined in /etc/freetds/freetds.conf # The TDS_Version should match what we defined in /etc/freetds/freetds.conf [ebe] Description = MSSQL Server Driver = freetds Database = my_database ServerName = my_server_name TDS_Version = 8.0 /etc/odbcinst.ini # Define where to find the driver for the Free TDS connections. [freetds] Description = MS SQL database access with Free TDS Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/i386-linux-gnu/odbc/libtdsS.so UsageCount = 1 # Change the "no" to "yes" to enable ODBC logging. [ODBC] Trace = no TraceFile = /tmp/odbc.log /etc/freetds/freetds.conf [global] # If you get out-of-memory errors,it may mean that your client # is trying to allocate a huge buffer for a TEXT field. # Try setting 'text size' to a more reasonable limit text size = 64512 # Define a connection to the MSSQL server. [my_server_name] host = my_server_domain_or_ip port = 1433 tds version = 8.0 最后,这是我的PHP连接字符串: $this->db_connection = new PDO("dblib:dbname=my_database;host=my_server_domain_or_ip",'username','password'); 我相信将tds版本设置为8.0可能对您有很大帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |