| Bug #35824 | mysql_upgrade does not fix scheduler tables when upgrading from 5.1.23 to 5.1.24 | ||
|---|---|---|---|
| Submitted: | 4 Apr 2008 9:46 | Modified: | 7 May 2008 19:32 |
| Reporter: | Philip Stoev | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Command-line Clients | Severity: | S1 (Critical) |
| Version: | 5.1.24, 6.0.5 | OS: | Any |
| Assigned to: | Davi Arnaut | CPU Architecture: | Any |
[4 Apr 2008 14:25]
Philip Stoev
This regression is probably caused by bug #32633 . THat bug was fixed, however mysql_upgrade was not adjusted.
[4 Apr 2008 15:09]
Philip Stoev
Furthermore ../share/mysql_fix_privilege_tables.sql uses ALTER TABLE event ADD sql_mode to change the column, which is bound to fail since this column already exists. Contrast with ALTER TABLE proc MODIFY sql_mode in the same script, which is safer.
[4 Apr 2008 15:15]
Davi Arnaut
In a nutshell, this is the result of three problems: 1) mysql_upgrade succeeds even if the SQL update script fails; 2) 5.1 -> 5.1 upgrades where not envisioned for the event table (thus not a regression introduced by Bug#32633); 3) Server does not work with old sql_mode column of the event table.
[4 Apr 2008 16:48]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/44927 ChangeSet@1.2566, 2008-04-04 13:46:05-03:00, davi@mysql.com +1 -0 Bug#35824: mysql_upgrade does not fix scheduler tables when upgrading from 5.1.23 to 5.1.24 The problem is that when upgrading the event table, the sql_mode column was always being added instead of being updated to list new sql_mode values, causing upgrades of the event which already have a sql_mode column to not be updated to the new sql_mode values. The solution is to always add first a stub sql_mode column and subsequently update the column to the new sql_mode values.
[4 Apr 2008 22:16]
Davi Arnaut
Queued to mysql-5.1-release
[30 Apr 2008 14:57]
Philip Stoev
Same situation occurs when upgrading from 6.0.4 to 6.0.5.
[1 May 2008 6:16]
Bugs System
Pushed into 5.1.25-rc
[1 May 2008 6:19]
Bugs System
Pushed into 6.0.6-alpha
[7 May 2008 19:32]
Paul DuBois
Noted in 5.1.25, 6.0.6 changelogs. mysql_upgrade did not properly update the mysql.event table.
[12 Mar 2009 8:48]
Vygintas Krasauskas
Sure it was fixed?? We have upgraded from 5.0.58 to 5.1.31 on SuSE 10: removed all 5.0 RPMs, installed 5.1 and ran mysql_upgrade. Following error message is still being reported "Cannot proceed because system tables used by Event Scheduler were found damaged at server start". mysql_upgrade --force reports all "OK". Server version 5.1.31-enterprise-gpl-pro
[7 Aug 2009 1:01]
Chris Hennick
I'm still having this problem, and I'm using 5.1.31-1ubuntu2. I've tried running sudo mysql_upgrade --force, and it doesn't fix it.
[7 Aug 2009 15:08]
Davi Arnaut
Server needs to be restarted after running mysql_upgrade.
[29 Sep 2009 16:54]
Tomasz Kraus
If you are still having problems. DROP TABLE event and then get proper definition from this file: /usr/local/share/mysql/mysql_system_tables.sql or find it in other path, and execute proper CREATE. For me it helped

Description: When upgrading from 5.1.23 to 5.1.24 while keeping the same vardir and using mysql_upgrade, the scheduler will refuse to start with the following message: Incorrect definition of table mysql.event: expected column 'sql_mode' at position 14 to have type set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH'), found type set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_Z 080403 22:19:06 [ERROR] Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler. How to repeat: 1. Start and stop a 5.1.23 server: $ cd /build/5.1.23 $ perl mysql-test-run.pl --start-and-exit --skip-ndb --vardir=/build/events_vardir 2. Start a 5.1.24 server using the same vardir $ cd /build/5.1.24 $ perl mysql-test-run.pl --start-and-exit --skip-ndb --vardir=/build/events_vardir --start-dirty 3. Run mysql_upgrade in 5.1.24 $ ../bin/mysql_upgrade -uroot --socket=/build/events_vardir/tmp/master.sock 4. Restart 5.1.24 server $ perl mysql-test-run.pl --start-and-exit --skip-ndb --vardir=/build/events_vardir --start-dirty 5. Attempt to work with events $ ../bin/mysql -uroot --socket=/build/events_vardir/tmp/master.sock -e 'show events' test ERROR 1577 (HY000) at line 1: Cannot proceed because system tables used by Event Scheduler were found damaged at server start Suggested fix: Make sure mysql_upgrade brings the tables to the state the event scheduler requires them.