PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Restaurar banco de dados PostgreSQL do backup sem problema de restrição de chave estrangeira


Parece que você está recebendo um dump SQL em vez de um dump binário de pg_dump . Isso lhe daria uma grande pilha de SQL com o esquema (incluindo FKs) no topo, seguido por um monte de INSERTs para recarregar os dados. Um dump binário de pg_dump serviria melhor, parece que você precisa de um pouco de configuração extra para informar ao PhpPgAdmin onde pg_dump é. Então você alimentaria esse dump binário em pg_restore e pg_restore reconstruiria tudo na ordem correta para evitar problemas de integridade referencial (ou, mais precisamente, pg_restore restauraria todos os dados e adicionaria as restrições).

PhpPgAdmin parece querer trabalhar com dumps SQL simples em vez de pg_restore . Acho difícil de acreditar, mas não consigo encontrar nada na documentação sobre como invocar pg_restore . Se isso for verdade, você provavelmente terá que editar manualmente o dump SQL e mover todos os FKs para o final.

Você também pode tentar adicionar SET CONSTRAINTS ALL DEFERRED; na parte superior do seu dump SQL, que deve atrasar a verificação de restrição até o final da transação, você também desejará garantir que todo o bloco de INSERTs esteja contido em uma transação.

Se PhpPgAdmin realmente não puder invocar pg_restore então é melhor usar pg_dump e pg_restore manualmente para que você tenha o controle necessário sobre seus procedimentos de backup. Desculpe, mas qualquer ferramenta de administração de banco de dados que não consiga fazer backup de um banco de dados com FKs é pior do que inútil. Espero que alguém que conheça o PhpPgAdmin apareça e nos diga como usar o pg_restore com PhpPgAdmin.