From f52f931f4ba539fdd6aecc6a41f88e801187b708 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 19 May 2007 18:15:08 +0200 Subject: [PATCH] Bug #28401 mysql_upgrade Failed with STRICT_ALL_TABLES, ANSI_QUOTES and NO_ZERO_DATE - The SQL commands used by mysql_upgrade are written to be run with sql_mode set to '' - thus the scripts should change sql_mode for the session to make sure the SQL is legal. mysql-test/r/mysql_upgrade.result: Update test result mysql-test/t/mysql_upgrade.test: The SQL commands used by mysql_upgrade are written to be run with sql_mode set to '' - thus the scripts should change sql_mode for the session to make sure the SQL is legal. scripts/mysql_system_tables_fix.sql: Set sql_mode to '' before running the SQL commands to fix system tables - backport from 5.1 --- mysql-test/r/mysql_upgrade.result | 19 +++++++++++++++++++ mysql-test/t/mysql_upgrade.test | 13 +++++++++++++ scripts/mysql_system_tables_fix.sql | 1 + 3 files changed, 33 insertions(+) diff --git a/mysql-test/r/mysql_upgrade.result b/mysql-test/r/mysql_upgrade.result index 0c32f413bd8..b3b606bd1fc 100644 --- a/mysql-test/r/mysql_upgrade.result +++ b/mysql-test/r/mysql_upgrade.result @@ -60,3 +60,22 @@ DROP USER mysqltest1@'%'; Run mysql_upgrade with a non existing server socket mysqlcheck: Got error: 2005: Unknown MySQL server host 'not_existing_host' (errno) when trying to connect FATAL ERROR: Upgrade failed +set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE'; +mysql.columns_priv OK +mysql.db OK +mysql.func OK +mysql.help_category OK +mysql.help_keyword OK +mysql.help_relation OK +mysql.help_topic OK +mysql.host OK +mysql.proc OK +mysql.procs_priv OK +mysql.tables_priv OK +mysql.time_zone OK +mysql.time_zone_leap_second OK +mysql.time_zone_name OK +mysql.time_zone_transition OK +mysql.time_zone_transition_type OK +mysql.user OK +set GLOBAL sql_mode=default; diff --git a/mysql-test/t/mysql_upgrade.test b/mysql-test/t/mysql_upgrade.test index 3f9626fcc42..233e8c7c256 100644 --- a/mysql-test/t/mysql_upgrade.test +++ b/mysql-test/t/mysql_upgrade.test @@ -55,3 +55,16 @@ DROP USER mysqltest1@'%'; --replace_regex /.*mysqlcheck.*: Got/mysqlcheck: Got/ /\([0-9]*\)/(errno)/ --error 1 --exec $MYSQL_UPGRADE --skip-verbose --force --host=not_existing_host 2>&1 + +# +# Bug #28401 mysql_upgrade Failed with STRICT_ALL_TABLES, ANSI_QUOTES and NO_ZERO_DATE +# + +# The SQL commands used by mysql_upgrade are written to be run +# with sql_mode set to '' - thus the scripts should change sql_mode +# for the session to make sure the SQL is legal. + +# Test by setting sql_mode before running mysql_upgrade +set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE'; +--exec $MYSQL_UPGRADE --skip-verbose --force 2>&1 +eval set GLOBAL sql_mode=default; diff --git a/scripts/mysql_system_tables_fix.sql b/scripts/mysql_system_tables_fix.sql index 205bc93efea..c8334339b32 100644 --- a/scripts/mysql_system_tables_fix.sql +++ b/scripts/mysql_system_tables_fix.sql @@ -9,6 +9,7 @@ # this sql script. # On windows you should do 'mysql --force mysql < mysql_fix_privilege_tables.sql' +set sql_mode=''; set storage_engine=MyISAM; ALTER TABLE user add File_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;