PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Przywróć bazę danych PostgreSQL z kopii zapasowej bez problemu z ograniczeniem klucza obcego

Wygląda na to, że otrzymujesz zrzut SQL, a nie zrzut binarny z pg_dump . Dałoby to duży stos SQL ze schematem (w tym FKs) na górze, a następnie kilka INSERTów do ponownego załadowania danych. Zrzut binarny z pg_dump służyłoby ci lepiej, wygląda na to, że potrzebujesz trochę dodatkowej konfiguracji, aby powiedzieć PhpPgAdmin, gdzie pg_dump jest. Następnie przekażesz ten zrzut binarny do pg_restore i pg_restore odbudowałby wszystko we właściwej kolejności, aby uniknąć problemów z integralnością referencyjną (lub, dokładniej, pg_restore przywróci wszystkie dane, a następnie doda ograniczenia).

PhpPgAdmin wydaje się chcieć pracuj ze zwykłymi zrzutami SQL zamiast pg_restore . Trudno mi w to uwierzyć, ale nie mogę znaleźć niczego w dokumentacji na temat wywoływania pg_restore . Jeśli to prawda, prawdopodobnie będziesz musiał ręcznie edytować zrzut SQL i przenieść wszystkie FK na koniec.

Możesz także spróbować dodać SET CONSTRAINTS ALL DEFERRED; na górze twojego zrzutu SQL, co powinno opóźnić sprawdzanie ograniczeń do końca transakcji, powinieneś również upewnić się, że cały blok INSERTów jest zawarty w transakcji.

Jeśli PhpPgAdmin naprawdę nie może wywołać pg_restore wtedy lepiej jest używać pg_dump i pg_restore ręcznie, aby mieć niezbędną kontrolę nad procedurami tworzenia kopii zapasowych. Przepraszamy, ale każde narzędzie administratora bazy danych, które nie radzi sobie z tworzeniem kopii zapasowej bazy danych za pomocą FK, jest gorzej niż bezużyteczne. Mam nadzieję, że pojawi się ktoś, kto zna się na PhpPgAdmin i poinformuje nas, jak używać pg_restore z PHPPgAdmin.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL z klauzulą ​​WHERE IN

  2. Odzwierciedlaj określone tabele w postgreSQL

  3. Jak ignorować błędy za pomocą psql \copy meta-command

  4. Jak mogę zaimportować plik JSON do PostgreSQL?

  5. Jak używać pgBackRest do tworzenia kopii zapasowych PostgreSQL i TimescaleDB?