Eu tenho um dump do MySQL 5.7.x com cerca de 12 GB que tento importar para uma instância local do MySQL 8.0.x recém-instalada.
mysql -u username -p test < DB-210508.sql
A importação é iniciada, mas falha com a seguinte mensagem:
ERROR 1824 (HY000) at line 518: Failed to open the referenced table 'table-name'
Estou me perguntando por que há um problema com chaves estrangeiras e se não é mais devido ao fato de estar importando para 8.0.x
A instância do MySQL 8.0.x é configurada assim:
[mysqld]
default_authentication_plugin= mysql_native_password
innodb_buffer_pool_size = 8G
innodb_buffer_pool_instances = 32
innodb_buffer_pool_chunk_size = 134217728
collation_server = utf8_unicode_ci
character_set_server = utf8
Qual poderia ser o motivo da importação com falha?
Este erro acontece quando você tem um problema clássico de “galinha e ovo”. As situações mais comuns para isso seriam:
⇢ um bom exemplo disso seria uma
Employee
tabela onde o registro 33 tivesse um gerente com um ID 999. 33 não poderia ser registrado até que 999 existisse na tabela .⇢ isso pode acontecer quando você tem uma
Employee
tabela que tem referências aUser
, masUser
não é criada até depois deEmployee
.O erro que você recebeu foi:
Isso aponta para o segundo item como sendo o culpado mais provável.
A maneira mais simples de resolver isso seria remover as verificações de chave estrangeira ao importar os dados e restaurar as verificações após a conclusão da importação. Você pode fazer isso editando seu
.sql
arquivo de 12 GB para ter isso logo no início:Então, no final do arquivo de importação: