2011-06-16 30 views
0

我有這樣我的unixODBC ODBC.INI配置文件:unixODBC驅動程序連接到MySQL,默認的數據庫無法正常工作

[test] 
Driver = /usr/local/lib/libmyodbc5-5.1.8.so 
Description = Connector/ODBC 5.1.8 Driver DSN 
SERVER = 127.0.0.1 
PORT = 3306 
USER = root 
Password = 
DATABASE = test 
OPTION = 
SOCKET = 

而且問題是,它不會使用數據庫作爲上述規定,其是'測試'。

我要做的是手動執行SQL直接更改爲數據庫和運行我的查詢:

SQLExecDirect(stmt, "USE test", SQL_NTS); 
SQLExecDirect(stmt, "SELECT * FROM mytable", SQL_NTS); 

上我應該如何擺脫「使用測試」,這是一個MySQL的任何想法命令。 爲什麼unixodbc沒有將'test'設置爲默認數據庫,因爲它已經在conf文件中指定了?

回答

1

由於在Windows上驅動程序管理器(本例中爲unixODBC)僅對驅動程序標記起作用,因此DSN中的所有其他條目都由驅動程序解釋。它沒有注意到有一個數據庫=條目,並且知道在這個驅動程序中它應該執行「USE」命令,並且對於另一個調用SQLSetConnectAttr(SQL_ATTR_CURRENT_CATALOG)。

在我的MySQL驅動程序副本上,它肯定使用了數據庫=條目。但是,我會檢查1.正在使用的驅動程序的副本是使用unixODBC庫訪問共享配置文件(libodbcinst.so),或者驅動程序正在直接讀取它,並且正在讀取相同的ini文件作爲unixODBC。可能要檢查strace,看看驅動程序加載後打開哪些ini。也許嘗試1,2之間設置ODBCINI = /路徑/到/你/ ODBC.INI

1
[test] 
Driver = /usr/local/lib/libmyodbc5-5.1.8.so 
Description = Connector/ODBC 5.1.8 Driver DSN 
SERVER = 127.0.0.1 
PORT = 3306 
USER = root 
Password = 
**DATABASE** = test 
**OPTION** = **3** 
**SOCKET** = 

,並且可以更改選項時也是

相關問題