суббота, 26 января 2013 г.

mysqldump: Couldn't execute 'show create table `general_log`': Table 'mysql.general_log' doesn't exist (1146)

Иногда бывает ошибка
Error: Couldn't read status information for table general_log ()
mysqldump: Couldn't execute 'show create table `general_log`': Table 'mysql.general_log' doesn't exist (1146)

Особенно актуально, когда есть перенос данных между серверами с разными версиями mysql, а также когда неправильно чистят таблицу general_log

Вариант 1: попробовать mysql_upgrade

Вариант 2: создать эту таблицу
USE mysql;

CREATE TABLE IF NOT EXISTS `general_log` (
  `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_host` mediumtext NOT NULL,
  `thread_id` int(11) NOT NULL,
  `server_id` int(10) unsigned NOT NULL,
  `command_type` varchar(64) NOT NULL,
  `argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';

для очистки использовать не drop table а truncate table.

Вариант 3: баги в дистрибутивах, в частности RHEL6, но должны подходить решения из 1 или 2 варианта.

Собставенно, использование этого лога в таблицу:
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
выключать потом
SET GLOBAL general_log = 'OFF';
По умолчанию пишет в файл, чего обычно более чем достаточно.

Линки

1 комментарий: