среда, 6 августа 2014 г.

MySQL error 1286: Unknown table engine 'InnoDB'

Во время тюнинга MySQL на одном из серверов, поймал такую ошибку - MySQL error 1286: Unknown table engine 'InnoDB'. Оказалось, что виноваты мои кривые руки.

Собственно посмотрим, какие движки MySQL нам доступны:
mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

И видим, что нету движка InnoDB.



Тогда я полез в конфиг MySQL и вспомнил, что я изменил параметр innodb_log_file_size.
Но старые файлы логов я не трогал и они так и остались размером 5 Мб (по умолчанию).
# vim /etc/mysql/my.cnf 
innodb_log_file_size = 12M

# ls -lh /var/lib/mysql/ib_logfile*
-rw-rw---- 1 mysql mysql 5,0M Авг  4 15:49 /var/lib/mysql/ib_logfile0
-rw-rw---- 1 mysql mysql 5,0M Авг  4 15:47 /var/lib/mysql/ib_logfile1

И из-за разницы в размере лог файлов падала поддержка InnoDB. Решает это просто удалением старых лог файлов
# rm /var/lib/mysql/ib_logfile*

И рестартом MySQL
# service mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld ..
Checking for corrupt, not cleanly closed and upgrade needing tables..

Проверим размер вновь созданных логов и видим, что он равен 12 Мб
# ls -lh /var/lib/mysql/ib*
-rw-rw---- 1 mysql mysql 642M Авг  4 15:49 /var/lib/mysql/ibdata1
-rw-rw---- 1 mysql mysql  12M Авг  5 10:41 /var/lib/mysql/ib_logfile0
-rw-rw---- 1 mysql mysql  12M Авг  5 10:41 /var/lib/mysql/ib_logfile1

Так же проверим поддержку InnoDB:
mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

Будьте внимательнее и не повторяйте моих ошибок.

3 комментария:

  1. Та же ошибка возникла у меня на виндовс, но из-за того, что я добавил в ini-файл параметр TMPDIR=... с каталогом, отличным от каталога MySQL. Удаление этого параметра и перезапуск помогли. А толчком послужила эта статья. Спасибо автору!

    ОтветитьУдалить
  2. Не знаю что я натворил ( не в какие скрипты не лазил ) . Та же ошибка. Сделал как вы сказали - не помогло : (

    ОтветитьУдалить
  3. Ой, спасибо. Именно это. И главное, что помогло.

    ОтветитьУдалить