ไม่สามารถดำเนินการต่อได้เนื่องจากพบว่าตารางระบบที่ใช้โดย Event Scheduler เสียหายเมื่อเริ่มต้นเซิร์ฟเวอร์


18

ฉันพยายามที่จะคัดลอกข้อมูลจากฐานข้อมูล MySQL หนึ่งไปยังอีกบนเซิร์ฟเวอร์อื่นโดยใช้ Navicat สำหรับ MySQL อย่างไรก็ตามฉันได้รับข้อผิดพลาดนี้เมื่อพยายามโอน ฉันทำงานmysql_upgradeไปแล้วและทำงานเสร็จ แต่ฉันยังคงได้รับข้อผิดพลาดนี้ เซิร์ฟเวอร์เก่าใช้ WampServer สำหรับ Apache, MySQL และ PHP

ฉันจะแก้ไขสิ่งนี้ได้อย่างไรเพื่อให้ฉันสามารถถ่ายโอนข้อมูลได้ ??

แก้ไขไม่เป็นไร ... ฉันเป็นคนงี่เง่า; เพิ่งต้องรีสตาร์ท MySQL (คุณจะคิดว่ามันจะเกิดขึ้นโดยอัตโนมัติ!)

คำตอบ:


37

ลองใช้คำสั่งต่อไปนี้แล้วเริ่มบริการ mysql ของคุณใหม่ในภายหลัง

mysqlcheck -u [username] -p --all-databases --check-upgrade --auto-repair
mysql_upgrade -u [username] -p

หากยังคงมีปัญหาในการวางตารางกิจกรรมและสร้างอีกครั้งให้รีสตาร์ท

DROP TABLE event;

ค้นหาคำนิยามตารางเหตุการณ์จากไฟล์ mysql_system_tables.sql สำหรับฉันมันอยู่ในสถานที่ดังต่อไปนี้: /usr/local/share/mysql/mysql_system_tables.sql

นิยามตารางกิจกรรม Mysql 5.1:

DROP TABLE IF EXISTS `event`;
CREATE TABLE `event` (
  `db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `name` char(64) NOT NULL DEFAULT '',
  `body` longblob NOT NULL,
  `definer` char(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `execute_at` datetime DEFAULT NULL,
  `interval_value` int(11) DEFAULT NULL,
  `interval_field` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') DEFAULT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `last_executed` datetime DEFAULT NULL,
  `starts` datetime DEFAULT NULL,
  `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','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',
  `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `body_utf8` longblob,
  PRIMARY KEY (`db`,`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Events';

หากรุ่น mysql ใหญ่กว่า 5.6 คุณอาจต้องเพิ่ม "SET SQL_MODE = 'ALLOW_INVALID_DATES'; ก่อนที่จะวางคำสั่ง modifiedการประทับเวลาไม่เป็นค่าเริ่มต้น '0000-00-00 00:00:00' คอลัมน์จะเรียกใช้ข้อผิดพลาดเนื่องจากไม่อนุญาตให้เติมเวลาเริ่มต้นเป็นศูนย์
Sinan Eldem
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.