MySQL事件表结构差异导致启动错误解决方案

972次浏览

Mariadb 5.5.30 用  percona 5.5.30 的mysql系统库启动时会报错

[ERROR] Incorrect definition of table mysql.event: expected column ‘sql_mode’ at position 14 to have type set …… [ERROR] mysqld: Table ‘./mysql/tables_priv’ is marked as crashed and should be repaired [Warning] Checking table: ‘./mysql/tables_priv’ [ERROR] mysql.tables_priv: 1 client is using or hasn’t closed the table properly mysql.proc ….. 

Mariadb和percona的mysql.event此表结构有点不同

diff -u  Mariadb.event.txt  percona.event.txt

— event.txt   2013-05-04 10:35:25.939778373 -0400

+++ event2.txt  2013-05-04 10:36:12.221966298 -0400

@@ -12,7 +12,7 @@

`ends` datetime DEFAULT NULL,

`status` enum(‘ENABLED’,'DISABLED’,'SLAVESIDE_DISABLED’) NOT NULL DEFAULT ‘ENABLED’,

`on_completion` enum(‘DROP’,'PRESERVE’) NOT NULL DEFAULT ‘DROP’,

-  `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','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'NOT NULL DEFAULT ''  +  `sql_mode` 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') NOT NULL DEFAULT ''

`comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ”,

`originator` int(10) unsigned NOT NULL,

`time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT ‘SYSTEM’,

导致event无法使用, 在咨询P.linux兄后,解决办法如下

装一个纯净的mariadb,

然后从percona导出mysql库

mysqldump  -B mysql  –opt  –triggers=true  –events  -u root -p > mmmmmysql.sql

注释掉mysql.event, mysql.proc 表的建表语句(留下insert),然后手工导mmmmmysql.sql 进Mariadb 5.5.30

再启动Mariadb就没报错了 ,能正常运行!

原文链接:http://www.mysqlops.com/2013/05/08/percona-5-5-30-%E8%BD%AC%E6%8A%95-mariadb-5-5-30-%E5%B0%8F%E8%AE%B0.html

标签:

推荐阅读

headin_border
多列索引列顺序对查询性能的影响分析 - 推荐阅读文章
多列索引列顺序对查询性能的影响分析

多列索引的列顺序对查询性能有重要影响,选择性高的列应优先放在前面,以提高索引的使用效率。选择性高的字段能更有效地缩小数据范围,避免索引失效导致全表扫描。合理安排索引列顺序,有助于数据库优化器生成更高效...

MySQL数据中间层Atlas Sharding架构解析与应 - 推荐阅读文章
MySQL数据中间层Atlas Sharding架构解析与应

Atlas Sharding通过将数据切分到不同数据库组,有效提升MySQL的横向扩展性与写性能。相比传统主从复制,它更适用于高写入场景,同时支持组内读写分离与事务操作,为企业提供灵活且高效的数据库解...