Erro ao descartar o banco de dados InnoDB


8

Estou tentando soltar um banco de dados no mysql, mas sempre que recebo esse erro

ERROR 2013 (HY000): Lost connection to MySQL server during query

mesmo logado como root.

Originalmente, eu tinha uma tabela corrompida que não podia recriar; portanto, decidi recriar o banco de dados. Tenho arquivo innodb por tabela, não tenho certeza se isso importa.

Como posso descartar esse banco de dados?

Respostas:


10

Receio que você não possa descartar o banco de dados.

O problema vem da tabela que está corrompida. Não é necessariamente o .ibdarquivo. É, mais do que provável, a entrada do dicionário de dados no ibdata1 ( consulte a representação pictórica do ibdata1 ).

Eu escrevi sobre isso de volta Mar 02, 2012: Tabela InnoDB SELECT retorna ERRO 2006 (HY000): O servidor MySQL se foi (após uma queda de energia)

Embora tedioso, eis o que você pode fazer para salvar as outras tabelas nesse banco de dados corrompido bad_db:

PASSO 01) USE bad_db

PASSO 02) Corra SELECT COUNT(1) FROM tablename;para todas as tabelas em bad_db. Colete todos os nomes de tabelas que não travam o mysqld quando você tenta executar a contagem.

PASSO 03) Corra mysqldump -u... -p... bad_db table1 table2 ... tableN > bad_db_goodtables.sql para todas as tabelas que não travaram o mysqld.

Se você usar um nome de banco de dados diferente, recarregue bad_db_goodtables.sql-o nesse novo banco de dados.

Se você precisa que o banco de dados seja o mesmo nome, BAD NEWS !!! Você terá a revisão ibdata1. Há mais etapas:

PASSO 04) mysqldump todos os outros bancos de dados em arquivos de despejo separados

ETAPA 05) Execute a limpeza da infraestrutura do InnoDB ( consulte minha Oct 29, 2010publicação do StackOverflow )

PASSO 06) Recarregue todos os outros bons bancos de dados do mysqldumps.

De uma chance !!!


Muito apreciado Rolando! Resposta fantástica. Gostaria que houvesse uma maneira de reparar esse db. Teria gostado que ele seja o mesmo nome :)
giorgio79

Corri o MySQL por um tempo agora, se isso acontecesse pela primeira vez no outro dia, obrigado pela explicação.
WebLacky3rdClass

11
Como você pode executar a limpeza da infraestrutura do InnoDB se você não pode eliminar o banco de dados e a etapa 2 da limpeza é eliminar todos os bancos de dados?
bancer

Provavelmente é uma situação rara, mas eu tive isso ao restaurar um despejo como um trabalho em segundo plano. O terminal pai morreu e o banco de dados não pôde ser eliminado até que a conexão de restauração fosse interrompida.
STW
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.