1286 - Mecanismo de armazenamento desconhecido 'InnoDB'

4

Estou tentando usar o roundcube e ele recentemente acabou de quebrar. Eu não sei se isso é devido a uma atualização do MySQL que aconteceu recentemente ou não, mas no phpMyAdmin eu recebo o seguinte erro se eu tentar e ver uma tabela:

1286 - Unknown storage engine 'InnoDB'

e

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)

e

[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

Idéias para corrigir? Costumava funcionar muito bem.

    
por Tiffany Walker 13.03.2013 / 21:01

3 respostas

2

Parece que um ou mais arquivos de log do InnoDB foram corrompidos.

Nesse caso, o MySQL não carrega o mecanismo, mesmo que você não especifique skip-innodb no seu arquivo my.cnf .

Uma solução é parar mysqld e excluir esses arquivos de registro MAS tenha cuidado, pois você pode perder seus dados :

Even if InnoDB were used, you could delete the ib_arch_log* files. InnoDB redo log archiving was disabled in MySQL 4.1, I think. The ib_logfile* files are needed for InnoDB crash recovery. If you shut down InnoDB cleanly, you can remove them and change their size in the configuration file. Of course, you should be careful when doing such changes. It is best to take backups first.

Então o procedimento deve ser algo como:

/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

Por favor, mova os logs para backup, não os exclua;)

Dê uma olhada em esta resposta no dba. stackexchange.com para alguns insights úteis também.

    
por 13.03.2013 / 21:53
1

Adicione estas linhas a my.cnf

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


E então reinicie o MySQL:

service mysql restart

    
por 13.03.2013 / 21:52
0

Quando você desativar o innodb, não se esqueça de remover todas as tabelas relacionadas ao innodb do Dbs. Por exemplo, o banco de dados "mysql" tem 5 deles:

[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
    
por 27.07.2015 / 22:02