Неизвестный движок таблицы 'InnoDB'
Недавно я узнал, что могу максимизировать производительность mysql, если у меня есть хорошее оборудование. Поскольку я использовал InnoDB, я добавил дополнительную конфигурацию в my.ini
Вот недавно добавленные конфигурации:
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 2G
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 120
Затем я перезапускаю все службы. Но когда я использовал свою программу, произошла ошибка "Неизвестный движок таблицы" InnoDB ".
Что я пытался решить эту проблему:
- Я удаляю файл журнала для перезапуска службы, но у меня все еще есть ошибка.
Ответы
Ответ 1
Другие решения не устранили мою проблему.
Двигатель InnoDB был отключен после настройки конфигурации.
Удаление файлов borked ib_ * в mysql data dir исправил мою проблему и разрешил использовать буферный буфер 2G для InnoDB:
http://www.turnkeylinux.org/forum/support/20090111/drupal-6-problem-enable-innodb#comment-131
Ответ 2
1. Проверьте, включена ли поддержка InnoDB
:
mysql> show variables like 'have_innodb';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_innodb | YES |
+---------------+-------+
1 row in set (0.00 sec)
2.Если значение выше ВЫКЛЮЧЕНО, вам необходимо включить InnoDB.
3. Откройте файл конфигурации MySQL. На разных платформах файл конфигурации может отличаться в имени и местоположении файла:
4.Если параметр skip-innodbis раскомментирован/существует, то просто прокомментируйте его:
# skip-innodb
сервер 5.Shutdown MySQL, удалите/переименуйте журналы MySQL, чтобы обновить всю регистрацию сервера, и перезапустите сервер MySQL:
-
Linux:
~$: /etc/init.d/mysql stop
~$: rm /var/lib/mysql/ib_logfile*
~$: /etc/init.d/mysql start
-
Окна:
Перейдите в $MYSQL_INSTALL_DIRECTORY/data и удалите/переместите файлы журнала с префиксом ib_logfile.
Ответ 3
Я просто попробовал удалить файл журнала и перезапустил службы, и он работает! Но остерегайтесь выделения 2G, потому что innodb может не компилироваться, используйте 1G, если 2G не работает.
Ответ 4
Я столкнулся с этой проблемой. Проблема заключалась в том, что я выделял больше памяти для InnoDB, чем сервер с переменной innodb_buffer_pool_size
. MySQL не жаловался на то, что не смог выделить память в своих журналах об этом.
Ответ 5
Я пробовал все эти (и многие другие), но тот метод, который работал для меня:
- Остановить сервер MySql
/etc/init.d/mysql stop
- Удалить файлы журнала
rm ib_logfile0 ib_logfile1
- Переименуйте файл InnoDB (Если ничего не работает, потому что он будет воссоздан)
mv ibdata1 old_ibdata1
-
У меня есть это configs в /etc/mysql/my.cnf
→ Даже если вы не укажете это, MySql будет использовать значения по умолчанию.
[mysqld]
datadir=/data/mysql/data
socket=/var/run/mysqld/mysqld.sock
#Not a must to define the following
innodb_log_file_size=1G
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_buffer_pool_size=1G
innodb_data_file_path=ibdata1:10M:autoextend
innodb_lock_wait_timeout=18000
-
Запустите сервер MySql
/etc/init.d/mysql start
Ответ 6
Еще один вариант, который вы имеете, если полностью замаскировать свой файл my.cnf, - это заменить его конфигурацией по умолчанию из установки mysql. Для linux:
У вас есть следующие опции:
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-small.cnf
Вот пример его установки:
#backup original config
mv /etc/my.cnf{,.bak}
#copy new my.cnf from template
cp /usr/share/mysql/my-large.cnf /etc/my.cnf
Более подробную информацию об этих параметрах можно найти на http://dev.mysql.com/doc/mysql/en/option-files.html
Ответ 7
Была ли эта проблема при восстановлении из резервной копии. Проблема в том, что у меня были разные настройки в my.ini. Поэтому, если кто-то получит эту проблему, обязательно установите одинаковые настройки (скопируйте my.ini), остановите службу MySQL, затем восстановите всю папку данных и снова запустите службу MySQL.