| version 1.3, 2003/12/20 09:04:20 |
version 1.4, 2005/03/15 23:25:04 |
|
|
| # Licensed under terms of GNU General Public License. |
# Licensed under terms of GNU General Public License. |
| # All rights reserved. |
# All rights reserved. |
| # |
# |
| # $Platon: scripts/perl/mysql/mysql-table-copy.pl,v 1.2 2003/12/16 18:16:49 rajo Exp $ |
# $Platon: scripts/perl/mysql/mysql-table-copy.pl,v 1.3 2003/12/20 09:04:20 rajo Exp $ |
| |
|
| # TODO: - reconnect on closed connection |
# TODO: - reconnect on closed connection |
| # - managment for tables with multiple KEY columns |
# - managment for tables with multiple KEY columns |
| Line 60 print "Enter password for user $user2:\n |
|
| Line 60 print "Enter password for user $user2:\n |
|
| |
|
| $dbh1 = DBI->connect("DBI:mysql:" . $db_name1, $user1, $pass1) or die $DBI::errstr; |
$dbh1 = DBI->connect("DBI:mysql:" . $db_name1, $user1, $pass1) or die $DBI::errstr; |
| $dbh2 = DBI->connect("DBI:mysql:" . $db_name2, $user2, $pass2) or die $DBI::errstr; |
$dbh2 = DBI->connect("DBI:mysql:" . $db_name2, $user2, $pass2) or die $DBI::errstr; |
| |
$dbh1->{mysql_auto_reconnect} = 1; |
| |
$dbh2->{mysql_auto_reconnect} = 1; |
| |
|
| # }}} |
# }}} |
| |
|
| Line 91 $sql_delete_data = $dbh1->prepare( |
|
| Line 93 $sql_delete_data = $dbh1->prepare( |
|
| "DELETE FROM $table WHERE $primary_key = ? LIMIT 1") or die $dbh1->errstr; |
"DELETE FROM $table WHERE $primary_key = ? LIMIT 1") or die $dbh1->errstr; |
| |
|
| while (1) { |
while (1) { |
| |
|
| |
# MySQL auto reconnect {{{ |
| |
my $num = 0; |
| |
foreach my $dbh ($dbh1, $dbh2) { |
| |
$num++; |
| |
my $rv = 0; |
| |
while (!$rv) { |
| |
$rv = $dbh->ping(); |
| |
$dbh->{mysql_auto_reconnect} = 1; |
| |
|
| |
$rv += $dbh->ping(); |
| |
$dbh->{mysql_auto_reconnect} = 1; |
| |
|
| |
unless ($rv) { |
| |
warn cur_date(), " ### Warning: DB #$num/2 ping error !!\n"; |
| |
sleep 1; |
| |
} |
| |
} |
| |
} # }}} |
| |
|
| $sql_read_data->execute() or warn $dbh1->errstr; |
$sql_read_data->execute() or warn $dbh1->errstr; |
| while (my @row = $sql_read_data->fetchrow_array()) { |
while (my @row = $sql_read_data->fetchrow_array()) { |
| my $prim_key = shift @row; # cut PRIMARY KEY column, which is not inserted |
my $prim_key = shift @row; # cut PRIMARY KEY column, which is not inserted |