Назад | Перейти на главную страницу

1286 - Неизвестный механизм хранения InnoDB

Я пытаюсь использовать roundcube, и он недавно сломался. Я не знаю, связано ли это с недавним обновлением MySQL или нет, но в phpMyAdmin я получаю следующую ошибку, если пытаюсь просмотреть таблицу:

1286 - Unknown storage engine 'InnoDB'

и

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MyISAM             | DEFAULT | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)

и

[mysqld]
default-storage-engine=MyISAM
local-infile=0
symbolic-links=0
skip-networking
max_connections = 500
max_user_connections = 20
key_buffer = 512M
myisam_sort_buffer_size = 64M
join_buffer_size = 64M
read_buffer_size = 12M
sort_buffer_size = 12M
read_rnd_buffer_size = 12M
table_cache = 2048
thread_cache_size = 16K
wait_timeout = 30
connect_timeout = 15
tmp_table_size = 64M
max_heap_table_size = 64M
max_allowed_packet = 64M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 64M
query_cache_type = 1
low_priority_updates=1
concurrent_insert=ALWAYS
log-error=/var/log/mysql/error.log
tmpdir=/home/mysqltmp
myisam_repair_threads=4
[mysqld_safe]
open_files_limit = 8192
log-error=/var/log/mysql/error.log

[mysqldump]
quick
max_allowed_packet = 512M

[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M

Идеи как исправить? Раньше все работало нормально.

Похоже, что один или несколько файлов журнала InnoDB были повреждены.

В этом случае MySQL не загружает движок, даже если вы не укажете skip-innodb в твоем my.cnf файл.

Решение - прекратить mysqld и удалите эти файлы журналов НО будь осторожен, как можешь потерять свои данные:

Даже если бы использовался InnoDB, вы могли бы удалить файлы ib_arch_log *. Я думаю, что архивирование журнала повторного выполнения InnoDB было отключено в MySQL 4.1. Файлы ib_logfile * необходимы для восстановления после сбоя InnoDB. Если вы закрыли InnoDB чисто, вы можете удалить их и изменить их размер в файле конфигурации. Конечно, делать такие изменения следует осторожно. Лучше всего сначала сделать резервные копии.

Итак, процедура должна быть примерно такой:

/etc/init.d/mysql stop

mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak # these are your
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak # log files

/etc/init.d/mysql start

Пожалуйста, шаг эти журналы для резервного копирования, не удаляйте их;)

Взгляни на этот ответ на dba.stackexchange.com для некоторых полезных идей.

Добавьте эти строки в my.cnf

по умолчанию-хранилище-двигатель = innodb
по умолчанию тип таблицы = innodb


А затем перезапустите MySQL:

перезапуск службы mysql

Когда вы отключили innodb, не забудьте удалить все таблицы, связанные с innodb, из Dbs. Например, в базе данных "mysql" их 5:

root@ustimen.co$ mysql mysql -e 'show table status' | grep Unknown | awk '{print $1}'
innodb_index_stats
innodb_table_stats
slave_master_info
slave_relay_log_info
slave_worker_info