web-dev-qa-db-ja.com

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

修正方法に関するアイデアは?以前は問題なく動作していました。

4
Tiffany Walker

1つ以上のInnoDBログファイルが破損したようです。

その場合、my.cnfファイルでskip-innodbを指定しなくても、MySQLはエンジンをロードしません。

解決策は、mysqldを停止してそれらのログファイルを削除することです[〜#〜]しかし[〜#〜]できるだけ注意してくださいデータを失います

InnoDBを使用した場合でも、ib_Arch_log *ファイルを削除できます。 MySQL 4.1ではInnoDB REDOログのアーカイブが無効にされたと思います。 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

moveこれらのログをバックアップに移動してください。削除しないでください;)

dba.stackexchange.comのこの回答 も参考にしてください。

2
Mr Shunz

これらの行をmy.cnfに追加します

default-storage-engine = innodb
default-table-type = innodb


次にMySQLを再起動します。

service mysql restart

1
Luka

Innodbを無効にした場合は、すべてのinnodb関連のテーブルをDbsから削除することを忘れないでください。たとえば、「mysql」データベースには5つあります。

[email protected]$ 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
0
gaRex