使用Perl DBI操作MySQL的一些建議
使用perl連接mysql,這個網(wǎng)上有很多案例了,一般大家都是DBI下的DBD::MySQL這個模塊進(jìn)行.這里做一個mask弄一個TIPS:
Perl DBI MySQL的字符集為UTF8
Perl DBI 特殊字符寫入時報錯
Perl DBI 連接自動重連或是連接超時
1. 當(dāng)MySQL的字符集是UTF8時需要引入:
use utf8; binmode(STDOUT, ':encoding(utf8)'); binmode(STDIN, ':encoding(utf8)'); binmode(STDERR, ':encoding(utf8)');
目的:
解決perl連接mysql到數(shù)據(jù)后讀取顯示結(jié)果為亂碼的問題.
2.對于特殊字符的寫入,最好使用:
my $sth=$dbh->prepare("insert into wubx.WeekEvent values(?,?,?,?,?,?,?)"); $sth->execute($OId,$CId,qq/$Time/,$EventType,qq/$CDesc/,$PId,$RFlag);
對于字符串有可能是用戶提交的用qq//包裹,減少特殊字符造成SQL不能執(zhí)行的情況.
3. 如果連接兩個數(shù)據(jù)庫有交換的操作或是遷數(shù)據(jù),要考慮連連超時的情況.
報錯: MySQL server has gone away
處理辦法:
在DBD::mysql 4.012以后支持DBI連接的自動重連.需要設(shè)置:
$dbh->{mysql_auto_reconnect} = 1;
在早期的模塊中不支持,簡單的方法:
$dbh->do('set SESSION wait_timeout=72000'); $dbh->do('set SESSION interactive_timeout=72000');
此方法適用別的語言連MySQL連接短期丟失或是Server的timeout時間設(shè)置太短.
相關(guān)文章
mysql-8.0.16 winx64的最新安裝教程圖文詳解
最近剛學(xué)習(xí)數(shù)據(jù)庫,首先是了解數(shù)據(jù)庫是什么,數(shù)據(jù)庫、數(shù)據(jù)表的基本操作,這就面臨了一個問題,mysql的安裝,我這里下載的是64位的,基于Windows的,需要的朋友可以參考下2019-06-06SQL Server 數(shù)據(jù)庫的備份詳細(xì)介紹及注意事項
這篇文章主要介紹了SQL Server 備份詳細(xì)介紹及注意事項的相關(guān)資料,需要的朋友可以參考下2016-12-12IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解
這篇文章主要介紹了IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解的相關(guān)資料,這里提供實例幫助大家解決數(shù)據(jù)庫升級及數(shù)據(jù)遷移的問題,需要的朋友可以參考下2017-07-07Mysql事項,視圖,函數(shù),觸發(fā)器命令(詳解)
下面小編就為大家?guī)硪黄狹ysql事項,視圖,函數(shù),觸發(fā)器命令(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11Mysql數(shù)據(jù)庫中的redo?log?寫入策略和binlog?寫入策略
這篇文章主要介紹了Mysql?redo?log?寫入策略和binlog?寫入策略,通過本文學(xué)習(xí)可以了解redo?log的寫入策略是由InnoDB提供了innodb_flush_log_at_trx_commit參數(shù),binlog的寫入策略,write?和fsync的時機(jī),是由參數(shù)sync_binlog控制的,需要的朋友可以參考下2022-04-04