私は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
修正方法に関するアイデアは?以前は問題なく動作していました。
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のこの回答 も参考にしてください。
これらの行をmy.cnfに追加します
default-storage-engine = innodb
default-table-type = innodb
次にMySQLを再起動します。
service mysql restart
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