Perl對MySQL的支持借助DBI/DBD客戶(hù)接口而提供。見(jiàn)20.5 MySQL Perl API。Perl DBD/DBI客戶(hù)代碼要求Perl 5.004或以后版本。如果你有Perl的一個(gè)更舊的版本,接口將不能工作。
MySQL Perl支持也要求你安裝了MySQL客戶(hù)編程支持。如果你從RPM文件安裝MySQL,客戶(hù)程序在客戶(hù)RPM中,但是客戶(hù)編程支持在開(kāi)發(fā)者RPM。確定你安裝了后一個(gè)RPM 。
對于版本3.22.8,Perl支持是與主要MySQL發(fā)行版本單獨分發(fā)。如果你想要安裝Perl支持,你需要的文件能從http://www.mysql.com/Contrib獲得。
Perl 分發(fā)以壓縮的tar檔案提供,并且有一個(gè)類(lèi)似“MODULE-VERSION.tar.gz”的名字,這里MODULE是模塊名字并且VERSION是版本號。你應該得到Data-Dumper、DBI和Msql-Mysql-modules分發(fā)并按此次序安裝他們。安裝過(guò)程顯示出在下面,顯示的例子針對Data-Dumper模塊, 但是所有3個(gè)過(guò)程是相同的。
shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -
這個(gè)命令創(chuàng )建的一個(gè)名為“Data-Dumper-VERSION”的目錄。
shell> cd Data-Dumper-VERSION
shell> perl Makefile.PLshell> makeshell> make testshell> make install
make test命令很重要,因為它驗證模塊正在工作。注意:在你Msql-Mysql-modules安裝期間運行該命令試驗接口代碼時(shí),MySQL服務(wù)器必須正在運行,否則測試將失敗。
無(wú)論何時(shí)你安裝一個(gè)新版本的MySQL,重建并且重新安裝Msql-Mysql-modules分發(fā)是一個(gè)好主意, 特別是如果你在升級MySQL后,觀(guān)察所有異常,如你的DBI腳本核心傾倒(core dump)。
如果你沒(méi)有權限在系統目錄下安裝Perl模塊,或如果你安裝本地Perl模塊,下列參考書(shū)可以幫助你:
http://www.iserver.com/support/contrib/perl5/modules.html
在標題Installing New Modules that Require Locally Installed Modules下面查找。
在 Win32 上安裝 ActiveState Perl的MySQL DBD的模塊, 你應該做下列步驟:
set HTTP_proxy=my.proxy.com:3128 C:\perl\bin\ppm.pl DBI: install DBI DBD::mysql:http://www.mysql.com/Contrib/ppd/DBD-mysql.ppd 如果你不能使上述步驟工作,你應該安裝MyODBC驅動(dòng)程序并且通過(guò)ODBC連接MySQL服務(wù)器。
use DBI;$dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") || die "Got error $DBI::errstr when connecting to $dsn\n";MySQL Perl分發(fā)包含DBI、DBD:MySQL和DBD:ODBC。
C:解壓縮分發(fā),這樣你得到一個(gè)“C:\PERL”目錄。 perl -v測試perl的運行。 DBI/DBD接口的問(wèn)題如果 Perl 報告它不能找到../mysql/mysql.so模塊,那么問(wèn)題可能是該Perl不能找到共享庫文件“libmysqlclient.so”。
你可用下列任何一個(gè)方法修正它這:
perl Makefile.PL -static而非perl Makefile.PL編譯Msql-Mysql-modules分發(fā)。 libmysqlclient.so到其他共享庫文件所在的目錄(可能是“/usr/lib”或“/lib”)。 Linux上,你可以把libmysqlclient.so所在目錄的路徑名加到“/etc/ld.so.conf”文件中。 libmysqlclient.so所在目錄的路徑名加到LD_RUN_PATH環(huán)境變量中。 如果你從DBD-mysql得到下列錯誤,你可能正在使用gcc(或使用一個(gè)舊的用gcc編譯的二進(jìn)制代碼):
/usr/bin/perl: can‘t resolve symbol ‘__moddi3‘/usr/bin/perl: can‘t resolve symbol ‘__divdi3‘
當“mysql.so”庫文件被構造時(shí)候,為鏈接命令加上-L/usr/lib/gcc-lib/... -lgcc(當你編譯Perl客戶(hù)時(shí)檢查針對“mysql.so”的make輸出)。-L選項應該指定“libgcc.a”在你系統上所在目錄的路徑名。
這個(gè)問(wèn)題的另一個(gè)原因可能是Perl和MySQL都不是用gcc編譯的。在這種情況下,你可以都用gcc編譯以解決不匹配。
如果你想要在一個(gè)不支持動(dòng)態(tài)鏈接(象SCO那樣)的系統上使用Perl模塊,你可以產(chǎn)生包括DBI和DBD-mysql的Perl的一個(gè)靜態(tài)版本。這種運行方法是你生成一個(gè)鏈接了DBI代碼的Perl版本并在最新的Perl上安裝它,然后你使用它來(lái)構造附加鏈接了DBD代碼的Perl版本,并且安裝它。
在 SCO 上,你必須有下列環(huán)境變量設置:
shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib或shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/libshell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/libshell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man:
首先, 在DBI分發(fā)所在目錄下運行下列命令,創(chuàng )造包括一個(gè)靜態(tài)鏈接的Perl DBI:
shell> perl Makefile.PL LINKTYPE=staticshell> makeshell> make installshell> make perl
然后你必須安裝新的Perl。make perl的輸出將顯示正確的你需要執行施行安裝的make的命令。在SCO上,是make -f Makefile.aperl inst_perl MAP_TARGET=perl.
接下來(lái),在Msql-Mysql-modules分發(fā)所在目錄下,使用剛才創(chuàng )建的Perl來(lái)創(chuàng )建同樣包括一個(gè)靜態(tài)鏈接的PerlDBD::mysql的另一個(gè)Perl:
shell> perl Makefile.PL LINKTYPE=static shell> make shell> make install shell> make perl
最后, 你應該安裝這個(gè)新的Perl。而且,make perl的輸出指出使用的命令。
聯(lián)系客服