gegangen Ich habe ein Migrationsskript, wo wir die Daten von einer Datenbank zu einer anderen Datenbank migrieren.Migration perl dbi Skript führt DBD :: mysql :: st ausführen fehlgeschlagen: MySQL Server ist um
my $ dbh1 = DBI-> connect ($ dsn1, $ userid, $ password, {mysql_enable_utf8 => 1}) oder $ DBI :: errstr sterben;
mein $ dbh2 = DBI-> verbinden ($ dsn2, $ userid, $ passwort, {mysql_enable_utf8 => 1}) oder sterben $ DBI :: errstr;
wo die Daten von dbh1 zu dbh2 migrieren. während das Skript ausgeführt wird. Wir bekommen Fehler wie: DBD :: mysql :: st ausführen fehlgeschlagen: MySQL Server ist weggegangen bei
Wenn die Verbindung fehlgeschlagen ist, wollen wir wieder verbinden und unser Skript fortsetzen. Wie können wir damit umgehen?
$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;
während über Schleife ausgeführt wird, wenn getrennt, dann würden wir wieder an und die Schleife fortzusetzen. Wie können wir das erreichen?
Wäre es nicht besser sein, um herauszufinden, warum die 'MySQL Server weg ist'? Ich habe manchmal Probleme wie diese gefunden, wenn meine Einfügungen größer sind als 'max_allowed_packet' in' my.cnf'. – MichielB