我已经坚持了一段时间这个问题,我只是无法进一步,我做了很多搜索但没有任何作用......我正在尝试使用odbc连接到带有php的Microsoft SQL数据库.
一切都已设置,如下所示(""之间的值在文件中是正确的):
/etc/odbc.ini:
[CRMCONNECT] Description = "CRMConnect" Driver = FreeTDS Trace = No Servername = CRMSERVER Database = "dbname" UserName = "username" Password = "password" [Default] Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
/etc/odbcinst.ini:
[FreeTDS] Description = tdsodbc Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so CPTimeout = 5 CPReuse = 5 FileUsage = 1
/etc/freetds/freetds.conf:
[CRMSERVER] host = xxx.xxx.xxx.xxx port = 1433 tds version = 8.0
我多次双重检查主机,这是正确的.我也尝试过tds版本7.0,但没有运气.
我可以使用isql成功连接到服务器:
root@crmart-web004:/# isql -v CRMCONNECT "user" "pass" +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
但是使用php我无法让它工作,我收到以下错误:
[unixODBC][Driver Manager]Data source name not found, and no default driver specified
我的连接字符串:
$connection = odbc_connect("Driver={CRMCONNECT};Server=xxx.xxx.xxx.xxx;Database=dbname;","username","password");
所有参数都经过双重检查并且是正确的.
为什么我可以成功连接isql但它在php中失败?
我的php版本:
PHP Version 5.4.4-14+deb7u5
odbcinst配置:
unixODBC 2.2.14 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8
我希望有人知道可能出错的地方.
提前致谢
问候
更新:
我将我的连接字符串更改为:
$connection = odbc_connect("CRMCONNECT;Database=dbname;","user","pass");
这导致了另一个错误:
[unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed
我会调查那个,再次感谢vinodadhikary
问候.
更新2:
我的连接字符串是错误的,应该是:
$connection = odbc_connect("CRMCONNECT","user","pass");
谢谢vinodadhikary!
问候和节日快乐.
由于您已经CRMCONNECT
DSN
定义了,因此可以使用以下连接方法:
$connection = odbc_connect("CRMCONNECT","username","password");
也在您的连接字符串中Driver={CRMCONNECT};
. CRMCONNECT
如您所定义的不是驱动程序,它是数据源名称.你的情况下的司机将是FreeTDS