Não é possível continuar porque as tabelas do sistema usadas pelo Event Scheduler foram localizadas danificadas no início do servidor

18

Estou tentando copiar dados de um banco de dados MySQL para outro em um servidor diferente usando o Navicat for MySQL. No entanto, continuo recebendo esse erro ao tentar fazer a transferência. Já executei mysql_upgradee ele foi concluído, mas ainda estou recebendo esse erro. O servidor antigo estava usando o WampServer para Apache, MySQL e PHP.

Como posso corrigir isso para que eu possa fazer a transferência de dados?

EDIT Deixa pra lá ... eu sou um idiota; apenas tive que reiniciar o MySQL (você pensaria que isso ocorreria automaticamente!)

Wayne Molina
fonte

Respostas:

37

Tente executar os seguintes comandos e reinicie o serviço mysql posteriormente.

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

Se ainda houver problemas, solte a tabela de eventos e crie novamente, em seguida, reinicie.

DROP TABLE event;

Localize a definição da tabela de eventos no arquivo mysql_system_tables.sql. Para mim, está no seguinte local: /usr/local/share/mysql/mysql_system_tables.sql

Definição da tabela de eventos do 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
fonte
se a versão do mysql for maior que 5.6, pode ser necessário adicionar "SET SQL_MODE = 'ALLOW_INVALID_DATES';" antes do comando drop. modifiedtimestamp NOT NULL DEFAULT '0000-00-00 00:00:00', a coluna disparará um erro, porque o tempo de preenchimento zero padrão não é mais permitido.
Sinan Eldem 11/12