Es kann nicht fortgefahren werden, da vom Event Scheduler verwendete Systemtabellen beim Serverstart als beschädigt befunden wurden

18

Ich versuche, mit Navicat for MySQL Daten von einer MySQL-Datenbank auf eine andere auf einem anderen Server zu kopieren. Ich erhalte jedoch immer wieder diese Fehlermeldung, wenn ich versuche, die Übertragung durchzuführen. Ich bin mysql_upgradebereits gelaufen und fertig, aber ich erhalte immer noch diesen Fehler. Der alte Server verwendete WampServer für Apache, MySQL und PHP.

Wie kann ich das beheben, damit ich die Datenübertragung durchführen kann?

EDIT Nevermind ... Ich bin ein Idiot; musste nur MySQL neu starten (man könnte meinen, es würde automatisch stattfinden!)

Wayne Molina
quelle

Antworten:

37

Führen Sie die folgenden Befehle aus und starten Sie den MySQL-Dienst später erneut.

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

Wenn weiterhin Probleme auftreten, löschen Sie die Ereignistabelle und erstellen Sie sie erneut. Starten Sie dann neu.

DROP TABLE event;

Suchen Sie die Definition der Ereignistabelle in der Datei mysql_system_tables.sql. Für mich ist es an folgendem Ort: /usr/local/share/mysql/mysql_system_tables.sql

Definition der MySQL 5.1-Ereignistabelle:

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
quelle
Wenn die MySQL-Version größer als 5.6 ist, müssen Sie möglicherweise "SET SQL_MODE = 'ALLOW_INVALID_DATES';" hinzufügen. vor dem Ablegen Befehl. modifiedtimestamp NOT NULL DEFAULT '0000-00-00 00:00:00', Spalte löst Fehler aus, da standardmäßig keine mit Null gefüllte Zeit mehr zulässig ist.
Sinan Eldem