서버 시작시 이벤트 스케줄러가 사용하는 시스템 테이블이 손상되어 진행할 수 없습니다.


18

Navicat for MySQL을 사용하여 한 MySQL 데이터베이스의 데이터를 다른 서버의 다른 데이터베이스로 복사하려고합니다. 그러나 전송을 시도 할 때이 오류가 계속 발생합니다. mysql_upgrade이미 실행 했지만 완료되었지만 여전히이 오류가 발생합니다. 이전 서버는 Apache, MySQL 및 PHP에 WampServer를 사용하고있었습니다.

데이터 전송을 수행 할 수 있도록이 문제를 어떻게 해결할 수 있습니까 ??

EDIT Nevermind ... 나는 바보입니다. 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';"를 추가해야합니다. 드롭 명령 전에. modifiedtimestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 기본 0 채워진 시간이 더 이상 허용되지 않으므로 열이 오류를 트리거합니다.
Sinan Eldem
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.