Недавно сменил серверы и перешел с CentOS 5.8 на CentOS 6.4. Я установил MySQL 5.1.69 на свой новый сервер и вручную заменил / var / lib / mysql. Я не уверен, какая версия MySQL была на моем старом сервере, но ожидаю, что она будет такой же.
Когда я пытаюсь запросить таблицу, я получаю следующее:
ERROR 1286 (42000): Unknown table engine 'InnoDB'
Таблицы, которые не используют InnoDB, работают нормально. Похоже, у меня не загружен InnoDB. Я установил MySQL, используя yum install mysql mysql-server
. Почему InnoDB не загружается и как мне его загрузить?
РЕДАКТИРОВАТЬ:
Может мне стоит вручную изменить ib_logfile0, чтобы размер файла был таким же?
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 | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
4 rows in set (0.00 sec)
mysql>
/var/log/mysqld.log:
130622 17:05:19 [Note] /usr/libexec/mysqld: Shutdown complete
130622 17:05:19 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
130622 17:06:09 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130622 17:06:09 InnoDB: Initializing buffer pool, size = 8.0M
130622 17:06:09 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
130622 17:06:09 [ERROR] Plugin 'InnoDB' init function returned error.
130622 17:06:09 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130622 17:06:09 [Note] Event Scheduler: Loaded 0 events
130622 17:06:09 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.69' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
Кажется как это хороший ответ. Что в основном гласит, что вы должны удалить / перестроить ib_logfile0
сами. Просто переместите файл в безопасное место, а не в каталог MySQL, который его ищет, и перезапустите сервер.
Предостережение: действительно ли у вас есть БД, требующие InnoDB? Если это так, вы можете вручную выполнить mydump каждой БД, чтобы получить резервную копию, затем удалить БД из базы данных MySQL, выключить MySQL, переместить / удалить ib_logfile0
—Я также предлагаю переместить / удалить ibdata1
и ib_logfile1
а также - и просто перезапуск MySQL.
Затем проверьте свои журналы, чтобы узнать, запустился ли InnoDB. Бьюсь об заклад, так и будет. На этом этапе воссоздайте БД, от которых вы избавились, и повторно импортируете данные. Новый ibdata1
, ib_logfile0
и ib_logfile1
файлы будут созданы, и все должно быть хорошо.
Вы скопировали файл ib_logfile0 со старого сервера? Если это так, попробуйте переместить его из этого каталога (или переименовать) и перезапустите mysqld.