diff --git a/pt-online-schema-change b/pt-online-schema-change index bbc5f15..ed11f1d 100755 --- a/pt-online-schema-change +++ b/pt-online-schema-change @@ -8827,6 +8827,20 @@ sub main { } if ( my $alter = $o->get('alter') ) { + my $new_sql_mode + = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } + . q{@@SQL_MODE := '', } + . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } + . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; + + my $old_sql_mode + = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } + . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; + + PTDEBUG && _d($new_sql_mode); + eval { $cxn->dbh()->do($new_sql_mode); }; + PTDEBUG && $EVAL_ERROR && _d($EVAL_ERROR); + print "Altering new table...\n"; my $sql = "ALTER TABLE $new_tbl->{name} $alter"; print $sql, "\n" if $o->get('print'); @@ -8838,6 +8852,9 @@ sub main { die "Error altering new table $new_tbl->{name}: $EVAL_ERROR\n" } print "Altered $new_tbl->{name} OK.\n"; + + PTDEBUG && _d($old_sql_mode); + $cxn->dbh()->do($old_sql_mode); } # Get the new table struct. This shouldn't die because @@ -9861,6 +9878,20 @@ sub create_new_table { my $tryno = 1; my @old_tables; while ( $tryno++ <= $tries ) { + my $new_sql_mode + = q{/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, } + . q{@@SQL_MODE := '', } + . q{@OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, } + . q{@@SQL_QUOTE_SHOW_CREATE := 1 */}; + + my $old_sql_mode + = q{/*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, } + . q{@@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */}; + + PTDEBUG && _d($new_sql_mode); + eval { $cxn->dbh()->do($new_sql_mode); }; + PTDEBUG && $EVAL_ERROR && _d($EVAL_ERROR); + if ( $new_table_prefix ) { $new_table_name = $new_table_prefix . $new_table_name; } @@ -9915,6 +9946,10 @@ sub create_new_table { } print $sql, "\n" if $o->get('print'); # the sql that work print "Created new table $orig_tbl->{db}.$new_table_name OK.\n"; + + PTDEBUG && _d($old_sql_mode); + $cxn->dbh()->do($old_sql_mode); + return { # success db => $orig_tbl->{db}, tbl => $new_table_name,