0
我有一個遷移腳本,我們將數據從一個數據庫遷移到另一個數據庫。遷移perl dbi腳本導致DBD :: mysql :: st執行失敗:MySQL服務器已消失
my $ dbh1 = DBI-> connect($ dsn1,$ userid,$ password,{mysql_enable_utf8 => 1})或者死於$ DBI :: errstr;
my $ dbh2 = DBI-> connect($ dsn2,$ userid,$ password,{mysql_enable_utf8 => 1})或者死於$ DBI :: errstr;
其中將數據從dbh1遷移到dbh2。同時運行腳本。我們得到的錯誤如下:DBD :: mysql :: st執行失敗:MySQL服務器已消失
如果連接失敗,我們要重新連接並繼續我們的腳本。我們如何處理?
而上面的循環執行$select = $dbh1->prepare("SELECT * FROM ADAP"); $insert = $dbh2->prepare("INSERT INTO ADAP VALUES (?,?,?,?,?,?,?)"); $select->execute; while (my ($ID,$STA,$UR,$TY) = $select->fetchrow_array) { $insert->execute($ID,$STA,$UR,$TY,'NULL','N','N'); if(!$insert->err) { $rows2+=1; } } $rows1 = $select->rows(); print "\n Total $rows2 copied out of $rows1 \n"; $rows2=0;
,如果斷開,然後我們會重新連接並繼續循環。我們怎樣才能做到這一點?
那豈不是更好地找出爲什麼「MySQL服務器已經走了」?當我的插入大於'my.cnf'中的'max_allowed_packet'時,我發現我有時會遇到這樣的問題。 – MichielB