Подтвердить что ты не робот

Mysql error: Таблица "mysql". "innodb_table_stats" не найден

Я получаю следующую ошибку в выпуске сообщества mysql 5.6:

: Error: 
Table "mysql"."innodb_table_stats"
 not found. InnoDB: Recalculation 
of persistent statistics requested for table "mydatabase"."mytable" 
but the required persistent statistics storage is not present or is corrupted. 
Using transient stats instead.

как исправить эту ошибку?

4b9b3361

Ответ 1

Это решило мою проблему.

/* временное исправление проблемы с установщиком Windows для MySQL 5.6.10 на машинах с Windows 7. Я сделал процедуру на чистом установленном MySql, и он работал для меня, по крайней мере, он остановил строки ошибок innodb в журнале и использование временных таблиц innodb. Итак, делайте это на свой страх и риск..

  1. удалить эти таблицы из mysql: innodb_index_stats innodb_table_stats slave_master_info slave_relay_log_info slave_worker_info

  2. удалить все .frm и .ibd из таблиц выше.

  3. запустите этот файл, чтобы воссоздать таблицы выше (source five-tables.sql).

  4. перезапустите mysqld. Приветствия, CNL */

CREATE TABLE 'innodb_index_stats' (
  'database_name' varchar(64) COLLATE utf8_bin NOT NULL,
  'table_name' varchar(64) COLLATE utf8_bin NOT NULL,
  'index_name' varchar(64) COLLATE utf8_bin NOT NULL,
  'last_update' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  'stat_name' varchar(64) COLLATE utf8_bin NOT NULL,
  'stat_value' bigint(20) unsigned NOT NULL,
  'sample_size' bigint(20) unsigned DEFAULT NULL,
  'stat_description' varchar(1024) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY ('database_name','table_name','index_name','stat_name')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;

CREATE TABLE 'innodb_table_stats' (
  'database_name' varchar(64) COLLATE utf8_bin NOT NULL,
  'table_name' varchar(64) COLLATE utf8_bin NOT NULL,
  'last_update' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  'n_rows' bigint(20) unsigned NOT NULL,
  'clustered_index_size' bigint(20) unsigned NOT NULL,
  'sum_of_other_index_sizes' bigint(20) unsigned NOT NULL,
  PRIMARY KEY ('database_name','table_name')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;

CREATE TABLE 'slave_master_info' (
  'Number_of_lines' int(10) unsigned NOT NULL COMMENT 'Number of lines in the file.',
  'Master_log_name' text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log currently being read from the master.',
  'Master_log_pos' bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last read event.',
  'Host' char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'The host name of the master.',
  'User_name' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The user name used to connect to the master.',
  'User_password' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The password used to connect to the master.',
  'Port' int(10) unsigned NOT NULL COMMENT 'The network port used to connect to the master.',
  'Connect_retry' int(10) unsigned NOT NULL COMMENT 'The period (in seconds) that the slave will wait before trying to reconnect to the master.',
  'Enabled_ssl' tinyint(1) NOT NULL COMMENT 'Indicates whether the server supports SSL connections.',
  'Ssl_ca' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Authority (CA) certificate.',
  'Ssl_capath' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path to the Certificate Authority (CA) certificates.',
  'Ssl_cert' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL certificate file.',
  'Ssl_cipher' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the cipher in use for the SSL connection.',
  'Ssl_key' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL key file.',
  'Ssl_verify_server_cert' tinyint(1) NOT NULL COMMENT 'Whether to verify the server certificate.',
  'Heartbeat' float NOT NULL,
  'Bind' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'Displays which interface is employed when connecting to the MySQL server',
  'Ignored_server_ids' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The number of server IDs to be ignored, followed by the actual server IDs',
  'Uuid' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The master server uuid.',
  'Retry_count' bigint(20) unsigned NOT NULL COMMENT 'Number of reconnect attempts, to the master, before giving up.',
  'Ssl_crl' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Revocation List (CRL)',
  'Ssl_crlpath' text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path used for Certificate Revocation List (CRL) files',
  'Enabled_auto_position' tinyint(1) NOT NULL COMMENT 'Indicates whether GTIDs will be used to retrieve events from the master.',
  PRIMARY KEY ('Host','Port')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Master Information';

CREATE TABLE 'slave_relay_log_info' (
  'Number_of_lines' int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.',
  'Relay_log_name' text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.',
  'Relay_log_pos' bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.',
  'Master_log_name' text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.',
  'Master_log_pos' bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.',
  'Sql_delay' int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.',
  'Number_of_workers' int(10) unsigned NOT NULL,
  'Id' int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.',
  PRIMARY KEY ('Id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information';

CREATE TABLE 'slave_worker_info' (
  'Id' int(10) unsigned NOT NULL,
  'Relay_log_name' text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  'Relay_log_pos' bigint(20) unsigned NOT NULL,
  'Master_log_name' text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  'Master_log_pos' bigint(20) unsigned NOT NULL,
  'Checkpoint_relay_log_name' text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  'Checkpoint_relay_log_pos' bigint(20) unsigned NOT NULL,
  'Checkpoint_master_log_name' text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  'Checkpoint_master_log_pos' bigint(20) unsigned NOT NULL,
  'Checkpoint_seqno' int(10) unsigned NOT NULL,
  'Checkpoint_group_size' int(10) unsigned NOT NULL,
  'Checkpoint_group_bitmap' blob NOT NULL,
  PRIMARY KEY ('Id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information';

Ответ 2

Недавно я столкнулся с этой проблемой на производственном сервере, и наиболее распространенные ответы, которые я нашел, включающие удаление таблиц, удаление файлов и т.д., заставили меня почувствовать себя немного неловко!

Поэтому я подумал, что было бы полезно указать людям, читающим это в будущем, что в моем случае фактическая причина ошибки заключалась в заполнении моего корневого раздела. В то время я делал дамп mysql и спасал его в неправильном месте. Таким образом, решение было просто освободить место на диске и перезапустить службу.

Возможно, было бы неплохо проверить, что это не так для вас, прежде чем перейти к стандартным решениям, которые связаны со структурой MYSQL и могут быть немного более рискованными.

Удача,

Ответ 3

Прочтите этот файл mysql, чтобы узнать больше о Persistent Statistics.

Чтобы отключить эту функцию, добавьте innodb_stats_persistent = 0 в my.cfg и перезагрузите сервер mysql.

Ответ 4

та же самая проблема, но таблица сбоев 'gtid_slave_pos', Создать gtid_slave_pos

CREATE TABLE `gtid_slave_pos` (
  `domain_id` int(10) unsigned NOT NULL,
  `sub_id` bigint(20) unsigned NOT NULL,
  `server_id` int(10) unsigned NOT NULL,
  `seq_no` bigint(20) unsigned NOT NULL,
  PRIMARY KEY (`domain_id`,`sub_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Replication slave GTID state';

Ответ 5

Это оказалось проблемой для меня. Поскольку это было на машине разработки, где разрешения не были заблокированы, я смог легко ее исправить:

sudo chmod -R 775 /usr/local/mysql/data

... если это решает его для вас, тогда здорово. Но если проблема связана с производственной машиной, вы можете расследовать разрешения чуть более тщательно, чем мое решение.

возможно, вы хотели бы попробовать это:

sudo chown mysql.mysql -R /usr/local/mysql/data

Ответ 6

Если вы используете Debian Linux:

Мое решение этой проблемы было после удаления файла mysql.innodb_table_stats и удаления связанных файлов .frm и .ibd, я запустил это:

dpkg-reconfigure mariadb-server-10.1

Он воссоздает таблицы innodb_ * для вас, но по какой-то причине у него возникли проблемы с уже существующими файлами (из предыдущей установки).

Я считаю это более безопасным, так как столбцы и их названия могли измениться с тех пор, как был написан ответ выше.