pt-upgrade: Deal with LOCAL INFILE being disabled

This commit is contained in:
Brian Fraser
2012-07-11 18:36:43 -03:00
parent e9c9608c33
commit e0d97bbc98
4 changed files with 115 additions and 73 deletions

View File

@@ -10990,6 +10990,32 @@ sub main {
$host->{name} = $name || 'unknown host';
}
# ########################################################################
# If we're comparing rows, check that LOAD DATA LOCAL INFILE works for,
# all hosts, or bail out early if it doesn't.
# ########################################################################
my $compare = $o->get('compare');
if ( $compare->{results}
&& lc($o->get('compare-results-method')) eq 'rows' )
{
foreach my $host ( @$hosts ) {
local $@;
my $sql = "LOAD DATA LOCAL INFILE '/dev/null' INTO TABLE "
. "`test`.`pt_not_there`";
eval { $host->{dbh}->do($sql); 1 } or do {
my $e = $@;
my $error_re = qr/\QDBD::mysql::db do failed: The used command is not allowed with this MySQL version [for Statement "LOAD DATA LOCAL INFILE/;
if ($e =~ $error_re) {
$_->{dbh}->disconnect() for @$hosts;
die("Cannot compare rows as LOAD DATA LOCAL INFILE "
. "is disabled for $host->{name}. See "
. "http://kb.percona.com/troubleshoot-load-data-infile"
);
}
};
}
}
# ########################################################################
# Make some common modules.
# ########################################################################
@@ -11023,7 +11049,6 @@ sub main {
# ########################################################################
# Make compare modules in order.
# ########################################################################
my $compare = $o->get('compare');
my @compare_modules;
if ( $compare->{results} ) {
my $method = lc $o->get('compare-results-method');