MySQL™ 參考手冊(Perl安裝說明)

Perl安裝說明

Perl DBI模塊爲數據庫訪問提供通用接口,你能夠編寫一個DBI腳本,它能夠與許多不一樣的數據庫引擎一塊兒工做,而無需更改。要使用DBI,必須爲要訪問的每種類型的數據庫服務器安裝DBI模塊以及數據庫驅動程序(DBD)模塊,對於MySQL,此驅動程序是DBD::mysql模塊。html

MySQL發行版不包含Perl支持,對於Unix你能夠從 http://search.cpan.org獲取必要的模塊,或者在Windows上使用ActiveState ppm程序,如下部分描述瞭如何執行此操做。

DBI/DBD接口須要Perl 5.6.0,而且首選5.6.1或更高版本,若是你有舊版本的Perl,則DBI不起做用,你應該使用DBD::mysql 4.009或更高版本,雖然早期版本可用,但它們不支持MySQL 8.0的完整功能。mysql

在Unix上安裝Perl

MySQL Perl支持要求你已經安裝了MySQL客戶端編程支持(庫和頭文件),大多數安裝方法都安裝了必要的文件。若是從Linux上的RPM文件安裝MySQL,請務必同時安裝開發人員RPM,客戶端程序位於客戶端RPM中,但客戶端編程支持位於開發人員RPM中。sql

你能夠從http://search.cpan.org上的CPAN(綜合Perl存檔網絡)獲取Perl支持所需的文件。shell

在Unix上安裝Perl模塊的最簡單方法是使用CPAN模塊,例如:數據庫

shell> perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql

DBD::mysql安裝運行了許多測試,這些測試嘗試使用默認用戶名和密碼鏈接到本地MySQL服務器,默認用戶名是Unix上的登陸名,Windows上是ODBC,默認密碼爲「無密碼」。若是沒法使用這些值鏈接到服務器(例如,若是你的賬戶有密碼),則測試將失敗,你能夠使用force install DBD::mysql來忽略失敗的測試。編程

DBI須要Data::Dumper模塊,它可能已安裝,若是沒有,你應該在安裝DBI以前安裝它。服務器

也能夠以壓縮tar檔案的形式下載模塊發行版並手動構建模塊,例如,要解壓縮並構建DBI發行版,請使用如下過程:網絡

  1. 將發行包解壓縮到當前目錄:測試

    shell> gunzip < DBI-VERSION.tar.gz | tar xvf -

    此命令建立名爲DBI-VERSION的目錄。code

  2. 將位置更改成解壓縮發行包的頂級目錄:

    shell> cd DBI-VERSION
  3. 構建發新版並編譯全部內容:

    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install

make test命令很重要,由於它驗證模塊是否正常工做,請注意,在DBD::mysql安裝期間運行該命令以執行接口代碼時,MySQL服務器必須正在運行或測試失敗。

每當安裝新版本的MySQL時,重建並從新安裝DBD::mysql發行版是個好主意,這可確保正確安裝最新版本的MySQL客戶端庫。

若是你沒有在系統目錄中安裝Perl模塊的訪問權限,或者若是要安裝本地Perl模塊,則如下引用可能有用:http://learn.perl.org/faq/per...

在Windows上安裝ActiveState Perl

在Windows上,你應該執行如下操做以使用ActiveState Perl安裝MySQL DBD模塊:

  1. http://www.activestate.com/Pr...獲取ActiveState Perl並安裝它。
  2. 打開控制檯窗口。
  3. 若有必要,請設置HTTP_proxy變量,例如,你能夠嘗試這樣的設置:

    C:\> set HTTP_proxy=my.proxy.com:3128
  4. 啓動PPM程序:

    C:\> C:\perl\bin\ppm.pl
  5. 若是你以前沒有這樣作,請安裝DBI:

    ppm> install DBI
  6. 若是成功,請運行如下命令:

    ppm> install DBD-mysql

此過程應與ActiveState Perl 5.6或更高版本一塊兒使用。

若是沒法使該過程起做用,則應安裝ODBC驅動程序並經過ODBC鏈接到MySQL服務器:

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
  die "Got error $DBI::errstr when connecting to $dsn\n";

使用Perl DBI/DBD接口的問題

若是Perl報告它找不到../mysql/mysql.so模塊,問題多是Perl沒法找到libmysqlclient.so共享庫,你應該可以經過如下方法之一解決此問題:

  • libmysqlclient.so複製到其餘共享庫所在的目錄(多是/usr/lib/lib)。
  • 修改用於編譯DBD::mysql-L選項以反映libmysqlclient.so的實際位置。
  • 在Linux上,你能夠將libmysqlclient.so所在目錄的路徑名添加到/etc/ld.so.conf文件中。
  • libmysqlclient.so所在目錄的路徑名添加到LD_RUN_PATH環境變量中,有些系統使用LD_LIBRARY_PATH

請注意,若是連接器沒法找到其餘庫,你可能還須要修改-L選項,例如,若是連接器找不到libc,由於它位於/lib中且link命令指定-L/usr/lib,請將-L選項更改成-L/lib或將-L/lib添加到現有連接命令。

若是從DBD::mysql中收到如下錯誤,則可能正在使用gcc(或使用使用gcc編譯的舊二進制文件):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

在構建mysql.so庫時將-L/usr/lib/gcc-lib/... -lgcc添加到link命令(在編譯Perl客戶端時檢查make mysql.so的輸出),-L選項應指定libgcc.a在系統上所在目錄的路徑名。

這個問題的另外一個緣由多是Perl和MySQL都不是用gcc編譯的,在這種狀況下,你能夠經過使用gcc編譯來解決不匹配問題。

相關文章
相關標籤/搜索