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

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

3
Tiffany Walker

観測

  • my.cnfにはInnodbに関連するものは何もありません。
  • Mysqldがエラーログで開始に失敗した理由を表すInnodb関連のエラーメッセージを探します。

私の最初の推測は、ib_logfile0ib_logfile1/var/lib/mysqlを調べることです。

それらがデフォルトとは異なるサイズに設定されている場合、それはおそらくmysqldの起動を妨げます。 innodb_log_file_size のデフォルトは5Mです。

提案#1

RoundCubeのインストールによってmy.cnfが上書きされた場合は、以前のmy.cnfの物理バックアップがあるかどうかを確認してください。それを元の場所に戻して実行します

service mysql start

提案#2

ib_logfile0のファイルサイズを1048576で除算します。12Mだとしましょう。

my.cnfに入れてください

[mysqld]
innodb_log_file_size = 12M

次に実行します

service mysql start

試してみる !!!

5
RolandoMySQLDBA

ib_logfileXファイルを削除して、mysqlサービスを再起動するだけです。

innodb-log-file-size変数を、mysqlデーモンですでに設定されているサイズよりも大きいサイズに変更しました。

1
Matías Rodrick

私は、roundcube、Apache2、mysql、dovecot、postfixを使用しています。

ハードディスクがクラッシュし、同じシステムを新しいHDDに再インストールした後、Webアプリケーション(roundcube)でメールサーバーに接続できません。メッセージは「不明なストレージエンジン 'InnoDB'」でした。

結果を出さずに奇跡で約2週間構成障害を検索した後、今日、一部のLinuxコンポーネントが/ tmpに書き込めないことがわかりました。

それが私がしたことのすべてです... put chmod 1777 /tmp ...
これで問題なく動作します!

幸運を!

0
Petre

このリンクを確認することをお勧めします: https://stackoverflow.com/questions/7303133/unknown-table-engine-innodb

記事で言及されていることのいくつか:1. innodbログファイルの削除。 2. innodb_buffer_pool_sizeを2G未満に変更する

0
Syakur Rahman

Petreはすでにそれを書いたが、おそらく明確にするために:

MySQLが一時ディレクトリ(通常は/ tmp)に書き込めない場合、InnoDBエンジンがロードされていないようです。これは、一時パーティション全体、または一時ディレクトリの不正な権限のいずれかが原因である可能性があります。

Petreが述べたようにchmod 1777 /tmpこの問題を解決する必要があります。後でMySQLを再起動することを忘れないでください。

0
Rudy Broersma

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