我堅持這個問題了一會兒,我不能再得到任何,我做了很多的搜索,但沒有的作品...我試圖用php連接到Microsoft SQL數據庫使用odbc。連接到MS SQL數據庫,PHP:數據源名稱未找到,也沒有指定默認驅動程序
一切都成立,如下(在 「」 的值是在該文件中正確):
/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連接到服務器:
[email protected]:/# 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
我的ConnectionString:
$connection = odbc_connect("Driver={CRMCONNECT};Server=xxx.xxx.xxx.xxx;Database=dbname;","username","password");
所有參數都doublechecked和正確。
我怎樣才能成功地與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
我希望有人有一個想法可能是錯誤的。
在此先感謝
問候
UPDATE:
我改變了我的ConnectionString到:
$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!
問候和節日快樂。
工作正常感謝您的回答,我很遺憾沒有意識到我正在定義一個數據源而不是一個驅動程序。我改變了連接字符串,並得到一個新的錯誤。至少我很高興我現在看到了另一個錯誤:-)我會研究這個問題。 – peird
嘗試從你的連接字符串中刪除'; Database = dbname;'並且保持它與我的答案完全一樣。您不需要傳入數據庫名稱,因爲ODBC已經定義了「數據庫」選項。 – vee
Woops,我錯過了。它現在完全有效,非常感謝! – peird