私は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
修正方法に関するアイデアは?以前は問題なく動作していました。
my.cnf
にはInnodbに関連するものは何もありません。私の最初の推測は、ib_logfile0
のib_logfile1
と/var/lib/mysql
を調べることです。
それらがデフォルトとは異なるサイズに設定されている場合、それはおそらくmysqldの起動を妨げます。 innodb_log_file_size のデフォルトは5Mです。
RoundCubeのインストールによってmy.cnf
が上書きされた場合は、以前のmy.cnf
の物理バックアップがあるかどうかを確認してください。それを元の場所に戻して実行します
service mysql start
ib_logfile0
のファイルサイズを1048576で除算します。12Mだとしましょう。
my.cnf
に入れてください
[mysqld]
innodb_log_file_size = 12M
次に実行します
service mysql start
試してみる !!!
ib_logfileX
ファイルを削除して、mysqlサービスを再起動するだけです。
innodb-log-file-size
変数を、mysqlデーモンですでに設定されているサイズよりも大きいサイズに変更しました。
私は、roundcube、Apache2、mysql、dovecot、postfixを使用しています。
ハードディスクがクラッシュし、同じシステムを新しいHDDに再インストールした後、Webアプリケーション(roundcube)でメールサーバーに接続できません。メッセージは「不明なストレージエンジン 'InnoDB'」でした。
結果を出さずに奇跡で約2週間構成障害を検索した後、今日、一部のLinuxコンポーネントが/ tmpに書き込めないことがわかりました。
それが私がしたことのすべてです... put chmod 1777 /tmp
...
これで問題なく動作します!
幸運を!
このリンクを確認することをお勧めします: https://stackoverflow.com/questions/7303133/unknown-table-engine-innodb
記事で言及されていることのいくつか:1. innodbログファイルの削除。 2. innodb_buffer_pool_sizeを2G未満に変更する
Petreはすでにそれを書いたが、おそらく明確にするために:
MySQLが一時ディレクトリ(通常は/ tmp)に書き込めない場合、InnoDBエンジンがロードされていないようです。これは、一時パーティション全体、または一時ディレクトリの不正な権限のいずれかが原因である可能性があります。
Petreが述べたようにchmod 1777 /tmp
この問題を解決する必要があります。後でMySQLを再起動することを忘れないでください。
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