Perl DBIを使用してMySQLを操作するためのいくつかの推奨事項

1232 ワード

perlを使ってmysqlを接続して、このネット上で多くのケースがあって、普通はみんなDBIの下のDBD::MySQLのこのモジュールで行います.ここで1つのmaskをして1つのTIPSを作ります:Perl DBI MySQLの文字セットはUTF 8 Perl DBIの特殊な文字が时报を书いて间违いますPerl DBI接続の自动的な再接続あるいは接続のタイムアウト1.MySQLの文字セットがUTF 8である場合、以下を導入する必要があります.

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.2つのデータベースを接続して交換する操作やデータの移行がある場合は、連続タイムアウトを考慮します.エラー: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接続が短期的に失われたり、サーバのtimeout時間設定が短すぎる場合に適用されます.