程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 使用Perl DBI操作MySQL的一些建議

使用Perl DBI操作MySQL的一些建議

編輯:關於MYSQL數據庫

使用perl連接mysql,這個網上有很多案例了,一般大家都是DBI下的DBD::MySQL這個模塊進行.這裡做一個mask弄一個TIPS:
 Perl DBI MySQL的字符集為UTF8
 Perl DBI 特殊字符寫入時報錯
 Perl DBI 連接自動重連或是連接超時
 
1. 當MySQL的字符集是UTF8時需要引入:
 

use utf8;
binmode(STDOUT, ':encoding(utf8)');
binmode(STDIN, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');

目的:
解決perl連接mysql到數據後讀取顯示結果為亂碼的問題.
 
2.對於特殊字符的寫入,最好使用:

 my $sth=$dbh->prepare("insert into wubx.WeekEvent values(?,?,?,?,?,?,?)");
 $sth->execute($OId,$CId,qq/$Time/,$EventType,qq/$CDesc/,$PId,$RFlag);


對於字符串有可能是用戶提交的用qq//包裹,減少特殊字符造成SQL不能執行的情況.
3. 如果連接兩個數據庫有交換的操作或是遷數據,要考慮連連超時的情況.
 報錯: MySQL server has gone away
  處理辦法:
  在DBD::mysql 4.012以後支持DBI連接的自動重連.需要設置:

 $dbh->{mysql_auto_reconnect} = 1;

  在早期的模塊中不支持,簡單的方法:
  

 $dbh->do('set SESSION wait_timeout=72000');
 $dbh->do('set SESSION interactive_timeout=72000');

  此方法適用別的語言連MySQL連接短期丟失或是Server的timeout時間設置太短.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved