Mysql – InnoDB missing from MySQL

innodbMySQL

I have no idea of what I have done here, but my InnoDB engine seems to have gone from my MySQL server. I recently upgraded it from the dotdeb repository, then installed mysql-server.

There is no mention of InnoDB in my my.cnf except some comments which explain InnoDB is enabled by default, which I don't understand. There is also no mention of InnoDB in SHOW ENGINES.

Is there something I'm missing here?

If it matters, my MySQL server version is: 5.5.24-1~dotdeb.1 (Debian).

EDIT: SHOW ENGINES:

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | DEFAULT | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | 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)

Data dir contents:

root@slone:/var/lib/mysql# ls
debian-5.1.flag  ib_logfile0.bk  ibdata1  mysql_upgrade_info  test
debian-5.5.flag  ib_logfile1.bk  mysql    performance_schema  tstore

Best Answer

Since you have done the following:

  • SHOW VARIABLES LIKE 'innodb%';
  • No InnoDB-related variables exist in my.cnf

and nothing comes up, please place this in my.cnf

[mysqld]
innodb

and start mysql and see if it comes up

UPDATE 2012-05-15 15:59 EDT

Since it fails to start up, you may need uninstall MySQL 5.5.24 and go back to MySQL 5.5.23 or whichever version you were last running with.

UPDATE 2012-05-15 16:06 EDT

Please run tail -30 on the mysql error log and paste that in the question.f it is not configured, go to the data folder and do ls -l *.err to find it.

UPDATE 2012-05-15 17:54 EDT

Based on the display you pasted in, you evidently had MySQL 5.1 running before. It just so happens that MySQL 5.1 has a table called mysql.plugin. It may have been populated before. It probably had something concerning the InnoDB plugin. MySQL 5.1.38 introduced the InnoDB plugin which has new features that are now native to MySQL 5.5's InnoDB. In other words, MySQL 5.5 does not need any plugin to run the new InnoDB.

Please run this query:

SELECT COUNT(1) FROM mysql.plugin;

If you get 1, that's probably the MySQL 5.1 InnoDB Plugin interfering. Try moving it over like this:

CREATE TABLE mysql.plugin_new LIKE mysql.plugin;
ALTER TABLE mysql.plugin RENAME mysql.plugin_old;
ALTER TABLE mysql.plugin_new RENAME mysql.plugin;

Afterwards, please restart mysql and see if InnoDB comes back