【发布时间】:2013-12-23 08:24:52
【问题描述】:
我被这个问题困扰了一段时间,我无法再进一步了,我做了很多搜索,但没有任何效果...我正在尝试使用 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!
问候和节日快乐。
【问题讨论】:
标签: php sql-server odbc freetds