2016-06-28 61 views
0

我正在嘗試使用my.ini文件作爲配置來連接mysql。如何使perl DBI中的mysql_read_default_group工作

這裏是我的Perl代碼:

use DBI; 

my $dsn = "DBI:mysql:umls;mysql_read_default_group=client;"; 

my $dbh = DBI->connect($dsn); 

這裏是的my.ini文件:

... 

[client] 

host=localhost 

user=root 

password=mypassword 

database=umls 

port=3306 

.... 

根據官方文檔(http://search.cpan.org/~capttofu/DBD-mysql-4.033/lib/DBD/mysql.pm), 的DBI將使用信息my.ini連接mysql,但是,它給我這樣的錯誤:errors

I th問題是DBI從來沒有成功讀取my.ini,因此它使用ODBC @ localhost作爲默認值。

如果我只是在connect()中指定了用戶名和密碼,連接就可以工作。 任何人都可以幫我找出爲什麼'mysql_read_default_group=client'不起作用? 我將非常感謝! 謝謝

+0

1)什麼操作系統您的Perl腳本上運行? 2)my.ini文件的完整路徑是什麼? 3)運行腳本的用戶是否有權讀取my.ini? 4)您能否將my.ini的完整內容寫入您的問題? – ThisSuitIsBlackNot

+0

您是否嘗試使用'''mysql_read_default_file = ...'''指定文件 –

回答

0

我讀了一些文件來解答你的問題,我發現你需要在不同的部分提供用戶名和密碼,你也需要提及文件名。像

[myapp] 
host=localhost 

user=root 

password=mypassword 

database=umls 

port=3306 

然後

my $dbh = DBI->connect("DBI:mysql:test" 
    . ";mysql_read_default_file=$ENV{HOME}/.my.cnf" 
    .';mysql_read_default_group=myapp', 
    undef, 
    undef 
    ) or die "something went wrong ($DBI::errstr)"; 

希望這會幫助你。

參考: http://www.perlmonks.org/?node_id=519356

+0

謝謝您的迴應。但是,這對我不起作用。事實是我有一個名爲UMLS的CPAN包: :interface.when安裝該模塊時,會出現此類錯誤。我檢查了軟件包源代碼並使用以下方式編寫: my $ dsn =「DBI:mysql:umls; mysql_read_default_group = client;」; $ db = DBI-> connect($ dsn); –

+0

所以爲了安裝這個包,我必須弄清楚爲什麼這行代碼$ dsn =「DBI:mysql:umls; mysql_read_default_group = client;」; $ db = DBI-> connect($ dsn);不起作用。 –