Impossible de continuer car les tables système utilisées par le planificateur d'événements ont été trouvées endommagées au démarrage du serveur

18

J'essaie de copier des données d'une base de données MySQL vers une autre sur un serveur différent à l'aide de Navicat pour MySQL. Cependant, je continue à recevoir cette erreur lorsque j'essaie de faire le transfert. J'ai déjà couru mysql_upgradeet c'est terminé, mais je reçois toujours cette erreur. L'ancien serveur utilisait WampServer pour Apache, MySQL et PHP.

Comment puis-je résoudre ce problème afin que je puisse faire le transfert de données ??

EDIT Nevermind ... Je suis un idiot; juste eu à redémarrer MySQL (on pourrait penser que cela aurait lieu automatiquement!)

Wayne Molina
la source

Réponses:

37

Essayez d'exécuter les commandes suivantes, puis redémarrez votre service mysql plus tard.

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

Si des problèmes persistent, supprimez la table d'événements et créez à nouveau, puis redémarrez.

DROP TABLE event;

Recherchez la définition de la table d'événements à partir du fichier mysql_system_tables.sql. Pour moi, c'est à l'emplacement suivant: /usr/local/share/mysql/mysql_system_tables.sql

Définition de la table d'événements 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
la source
si la version de mysql est supérieure à 5.6, vous devrez peut-être ajouter "SET SQL_MODE = 'ALLOW_INVALID_DATES';" avant la commande drop. modifiedhorodatage NOT NULL DEFAULT '0000-00-00 00:00:00', la colonne déclenchera une erreur, car le temps de remplissage zéro par défaut n'est plus autorisé.
Sinan Eldem