2016-02-17 14 views
10

Jestem początkującym użytkownikiem PostgreSQL. Z powodzeniem utworzyłem bazę danych, ustaw "philipyoung" - mój identyfikator jako superużytkownik i użyj poniższego polecenia, aby skopiować lokalną bazę danych na nowy serwer w słonieqq.Nie można skopiować bazy danych postgresql na nowy serwer z błędem [nierozpoznany parametr "row_security"]

pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname 

a następnie błąd poniżej dzieje

SET 
SET 
SET 
SET 
SET 
ERROR: unrecognized configuration parameter "row_security" 
ERROR: permission denied to create database 
ERROR: role "philipyoung" does not exist 
FATAL: no pg_hba.conf entry for host "xxx.xxx.xxx.xx", user "xxxx", database "xxxx", SSL on 

Każda pomoc będzie mile widziane

Odpowiedz

7

W „row_security” błąd jest prawdopodobnie dlatego, że masz nowszą wersję PostgreSQL lokalnie niż na zdalny koniec. To nie jest problem, chyba że używasz tej funkcji.

Błędy "odmowa uprawnień" i "użytkownik X nie istnieje" powodują awarię. Próbujesz przywrócić bazę danych jako użytkownik, który nie ma uprawnień do tworzenia bazy danych na serwerze zdalnym. Następnie nie może znaleźć odpowiedniego użytkownika, a następnie nie skonfigurował tego użytkownika do zdalnego dostępu.

Użytkownicy są dzieleni między bazami danych, a nie kopiowani z nimi.

Więc - chcesz zrobić coś takiego:

  1. zalogować się jako "postgres" na zdalnym serwerze i "CREATE USER X ..."
  2. Przywracanie bazy danych jako użytkownik "postgres" na zdalny serwer i powinien mieć możliwość ustawienia prawa własności dla wybranego użytkownika.

Jeśli nie chcesz zezwolić na zdalny dostęp do bazy danych, możesz utworzyć tunel SSH (wiele przykładów w Internecie) lub zrzut do pliku (użyj "-Fc" dla niestandardowego, skompresowany format) i najpierw skopiuj zrzut do zdalnego komputera.

Jeśli to możliwe, spróbuj uruchomić tę samą wersję PostgreSQL na obu serwerach. Ułatwia sprawy, jeśli komunikują się.

+0

Dzięki za rozwiązanie, Richard! Obniżanie wersji Postgre w wersji lokalnej wykonuje sztuczki. W zupełnie innym kontekście korzystałem z bezpłatnej usługi Heroku, aby poznać RESTful API w prawdziwym świecie. Nie dali pozwolenia na klonowanie mojej lokalnej bazy danych, ponieważ korzystam z darmowego abonamentu. Czy istnieje możliwość sklonowania całej tabeli do udostępnionej bazy danych online? Dzięki! –

+0

Obawiam się, że nie jestem użytkownikiem Heroku - będziesz musiał przeczytać ich dokumentację. Zakładając, że nie możesz instalować czegokolwiek na końcu Heroku, albo skończysz upuszczając wszystkie dane na zdalnym końcu i przesyłając ponownie lub skryptując swój własny skrypt różnicujący. –

Powiązane problemy