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.