2011-12-08 47 views
1

我需要從perl訪問MySQL。從perl使用odbc訪問mysql

我可以使用odbc驅動程序進行連接嗎?

如果是這樣,我該怎麼做?

我似乎無法得到正確的連接字符串!

在Windows上,在那裏DBD:MySQL是可用的,我這是怎麼連接:

DBI->connect("DBI:mysql:$database", 
    $user, $password, {RaiseError => 1}); 

這是我已經試過:

DBI->connect("DBI:ODBC:$database", $user, $password, {RaiseError => 1});' 

這將導致以下錯誤:

DBI connect('database','username',...) failed: [iODBC][Driver Manager]Data source name not found and no default driver specified. Driver could not be loaded (SQL-IM002) at -e line 1

這是一個本地機器上的標準連接 - 即perl應用程序和MySQL服務器在同一臺機器上。


我想使用odbc因爲DBD:mysqldoesn't build爲ActiveState的Perl的Mac OS X上,這對我們來說更容易,當我們堅持使用,可以通過PPM可獲得軟件包。

回答

2

你試過包括端口嗎?

http://www.connectionstrings.com/mysql#p0cs1

另外,對於ODBC,你可能需要指定驅動程序,如果你不打算針對 先前設置的DSN

DBI->connect(join(';' 
    , 'DBI:ODBC:driver={MySQL ODBC 5.1 Driver}' 
    , "Server=$SQL_SERVER" 
    , "Database=$SQL_DATABASE" 
    , "UID=$SQL_USERID" 
    , "PWD=$SQL_PASSWD" 
    )); 
+0

不,我沒有。我會嘗試的。我已經更新了OP以顯示我所嘗試的內容。 –

1

你$數據庫不是一個數據庫是數據源名稱(DSN)。應該將'dbi:ODBC:xxx'讀作'dbi:ODBC:DSN = xxx',iODBC驅動程序管理器將在其配置文件中尋找名爲'xxx'的DSN。正如你在Mac上應該有一個數據源GUI應用程序,你可以用它來創建DSNs,或者,你必須找到iODBC的ini文件並自己插入它們(我想或者我也許沒有使用iodbc.ini和iodbcinst.ini) '一世')。

「數據源名稱未找到,未指定默認驅動程序」通常表示在i​​ni文件(有用戶和系統文件)中找不到xxx數據源,但是後面的「無法加載驅動程序(SQL-IM002 )「類似的建議MySQL ODBC驅動程序庫無法加載,因此您的DSN確實存在,但它指向一個無效的MySQL ODBC驅動程序庫或一個壞了。再次,GUI應用程序允許您添加/編輯驅動程序,或者您需要找到iodbcinst.ini文件,並查看Driver屬性指向的驅動程序屬性。