Após uma nova instalação do XAMPP e importação do meu linux live db que está funcionando para o Windows Dev-stage, comecei a encontrar problemas com arquivos INSERT
. Todo o resto parece funcionar bem.
Os erros que recebo no mysql_error.log
são:
2013-08-15 12:44:49 16c0 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
2013-08-15 12:44:49 16c0 InnoDB: Recalculation of persistent statistics requested for table "sizaradb"."pages" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.
2013-08-15 12:44:59 16c0 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
2013-08-15 12:44:59 16c0 InnoDB: Recalculation of persistent statistics requested for table "sizaradb"."translations" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.
Não consigo abrir a tabela mysql/innodb_index_stats
do dicionário de dados interno do InnoDB embora o arquivo .frm para a tabela exista
Tentei corrigi-lo pesquisando os erros no Google e tentando ver correções de outras pessoas, mas ainda não está funcionando. Estou trabalhando nisso há 2 dias.
Por favor me ajude a resolver.
PROBLEMA
No MySQL 5.6,
ibdata1
inclui 5 InnoDB nomysql
esquema.Nas versões do MySQL anteriores a 5.6, se você desligar o mysql, excluir
ibdata1
e iniciar o backup do mysql,ibdata1
será recriado. Se você fizer isso com o MySQL 5.6, essas 5 tabelas não serão recriadas . Mesmo que você tenha excluídoibdata1
, os 10 arquivos a seguir ainda estão em/var/lib/mysql/mysql
:innodb_index_stats.frm
innodb_index_stats.ibd
innodb_table_stats.frm
innodb_table_stats.ibd
slave_master_info.frm
slave_master_info.ibd
slave_relay_log_info.frm
slave_relay_log_info.ibd
slave_worker_info.frm
slave_worker_info.ibd
Aprendi isso desde cedo. Com um recém-criado ou danificado
ibdata1
, não há entradas de dicionário de dados correspondentes para essas 5 tabelas.No seu caso particular, suspeito que você copiou
ibdata1
de um servidor Linux para o servidor Windows. O MySQL/Windows espera que o dicionário de dados tenha o formato de nome de arquivo DOS. Movendo issoibdata1
para o Windows, o MySQL/Windows não pode se relacionar com o nome do arquivo e o caminho do Linux para apontar para os arquivos.frm
e ..ibd
SOLUÇÃO
PASSO 01 : Instale o MySQL em outro servidor de banco de dados
PASSO 02 : mysqldump apenas essas 5 tabelas
PASSO 03 : Copie
mysql_innodb_tables.sql
para o servidor DB com tabelas inválidas.PASSO 04 : Executar
mysql_innodb_tables.sql
PASSO 05 : Executar
FLUSH TABLES;
(Opcional)De uma chance !!!
este bug é relatado no MySQL Forums ( 67179 ) e a solução é mencionada aqui . por favor, note que você deve fazer a limpeza, antes de criar tabelas
Após uma atualização, você precisa executar "mysql_upgrade -u root" e isso lidará com todas as atualizações da tabela do sistema.
para mariadb10:
Encontramos o mesmo problema na implantação do 5.6 como parte de nossos padrões, sempre instalamos a partir de .rpm e realocamos o diretório de dados após a primeira configuração. 5.5 e inferior, mudaríamos nossas configurações no /etc/my.cnf stop mysql e então tararia os diretórios do banco de dados no diretório de dados padrão e descompactaria para o nosso novo . À medida que alteramos todas as nossas configurações do innodb, obtemos um novo arquivo de dados innoddb limpo.
Então, agora, antes de pararmos nosso servidor, executamos o seguinte no banco de dados mysql
Em seguida, movemos todos os dados para o novo local e reiniciamos o mysql seguido por outro conjunto de alterações.
Isso parece funcionar bem para nós e é rápido de fazer