Tidak dapat melanjutkan karena tabel sistem yang digunakan oleh Penjadwal Acara ditemukan rusak pada awal server

18

Saya mencoba untuk menyalin data dari satu database MySQL ke yang lain di server yang berbeda menggunakan Navicat untuk MySQL. Namun, saya terus mendapatkan kesalahan ini ketika saya mencoba melakukan transfer. Saya sudah menjalankan mysql_upgradedan sudah selesai, tapi saya masih mendapatkan kesalahan ini. Server lama menggunakan WampServer untuk Apache, MySQL dan PHP.

Bagaimana saya bisa memperbaikinya sehingga saya dapat melakukan transfer data ??

EDIT Nevermind ... Saya seorang idiot; baru saja me-restart MySQL (Anda akan berpikir itu akan terjadi secara otomatis!)

Wayne Molina
sumber

Jawaban:

37

Coba jalankan perintah berikut dan restart layanan mysql Anda nanti.

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

Jika masih ada masalah drop table event dan buat lagi, kemudian restart.

DROP TABLE event;

Temukan definisi tabel acara dari file mysql_system_tables.sql. Bagi saya ini di lokasi berikut: /usr/local/share/mysql/mysql_system_tables.sql

Definisi tabel acara 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';
digz6666
sumber
jika versi mysql lebih besar dari 5.6 Anda mungkin perlu menambahkan "SET SQL_MODE = 'ALLOW_INVALID_DATES';" sebelum menjatuhkan perintah. modifiedtimestamp BUKAN NULL DEFAULT '0000-00-00 00:00:00', kolom akan memicu kesalahan, karena waktu pengisian nol default tidak lagi diizinkan.
Sinan Eldem