[PostgreSQL] View w dumpie
Sławek Mróz - 21-12-2005 12:16
[PostgreSQL] View w dumpie
Witam!
Podczas dumpowania bazy w Postgresie napotkalem jedno dziwne zachowanie: otoz pewien view dumpowany jest wczesniej niz tabela, na bazie ktorej powstal.
Skutek - podczas odtwarzania bazy polecenie utworzenia widoczku powoduje bunt, bo przeca na tym etapie czytania pliku tabela macierzysta nie zostala jeszcze utworzona.
Czy istnieje mozliwosc uporania sie z tym problemem?
Pozdr Slawek
Ronald Kuczek - 21-12-2005 12:16
Użytkownik Sławek Mróz napisał: > Witam! > > Podczas dumpowania bazy w Postgresie napotkalem jedno dziwne zachowanie: > otoz pewien view dumpowany jest wczesniej niz tabela, na bazie ktorej powstal. > > Skutek - podczas odtwarzania bazy polecenie utworzenia widoczku powoduje bunt, bo > przeca na tym etapie czytania pliku tabela macierzysta nie zostala jeszcze utworzona. > > Czy istnieje mozliwosc uporania sie z tym problemem? > Cześć,
Nie sprawdzałem tego wcześniej, ale przynajmniej w 8.x Postgres pilnuje, by tabeli na której oparte były widoki nie można było zdropować (no chyba, że z użyciem CASCADE - wtedy zostają usunięte i tabela i widok). Jeśli w wersji, której używasz tak nie jest, możliwe, że zdropowałeś tabelę i później założyłeś ją ponownie a widok pozostał "po staremu". Jeśli jednak nie, to spróbuj zrobić dump schematu (-s) i zajrzyj do skryptu. Jeżeli opisana sytuacja ma miejsce zgłoś błąd na psql-bugs. Oczywiście można sobie z tym poradzić - poprawiając skrypt.
Pozdrawiam Rony
Sławek Mróz - 21-12-2005 12:16
> Cześć, > > Nie sprawdzałem tego wcześniej, ale przynajmniej w 8.x Postgres pilnuje, by tabeli > na której oparte były widoki nie można było zdropować (no chyba, że z użyciem > CASCADE - wtedy zostają usunięte i tabela i widok). > Jeśli w wersji, której używasz tak nie jest, możliwe, że zdropowałeś tabelę i > później założyłeś ją ponownie a widok pozostał "po staremu". > Jeśli jednak nie, to spróbuj zrobić dump schematu (-s) i zajrzyj do skryptu. Jeżeli > opisana sytuacja ma miejsce zgłoś błąd na psql-bugs. > Oczywiście można sobie z tym poradzić - poprawiając skrypt.
Wersja faktycznie jest starsza, 7.2.1 O dziwo jednak tabela nie byla dropowana od czasu zalozenia widoku. Zreszta w takiej sytuacji (dropowanie tabeli i zalozenie ponownie) view nie dzialalby, przy zapytaniu na nim Postgres poskarzylby sie, ze object ID mu nie pasuje...
A ze da sie zmodyfikowac plik tekstowy - oczywiscie racja:) W razie potrzeby, zawsze zostaje takie rozwiazanie.
Pozdr Slawek
Adam Buraczewski - 27-12-2005 10:17
"Sławek Mróz" <slmroz@_krzak_wp.pl> wrote: > Podczas dumpowania bazy w Postgresie napotkalem jedno dziwne zachowanie: > otoz pewien view dumpowany jest wczesniej niz tabela, na bazie ktorej powstal. [...] > Czy istnieje mozliwosc uporania sie z tym problemem?
Dumpuj w formacie "custom" (czyli z opcją "-F c"), a potem użyj opcji -l i -L programu pg_restore do zmiany kolejności odtwarzania obiektów bazy (w skrócie: za pomocą -l generujesz plik ze "spisem treści" dumpa, potem za pomocą zwykłego edytora tekstu modyfikujesz kolejność w tym pliku i podajesz go jako parametr dla opcji -L przy odtwarzaniu). Oczywiście możesz też dumpować w formacie tekstowym, a potem poprawiać za pomocą jakiegoś edytora, ale to mniej wygodne, zwłaszcza dla dużych baz danych.
Jak przejdziesz na nowszą wersję Postgresa (najlepiej 8.1.x), to probem powinien zniknąć, bo od wersji 7.3 w Postgresie jest przechowywana informacja o zależnościach między obiektami, a od wersji 8.0 pg_dump dumpuje bazy z użyciem tych informacji, tak żeby odtwarzały się możliwie bez problemów. Po przejściu powinieneś jeszcze uruchomić dla tych baz program adddepend, znajdujący się w contrib -- uzupełnia on bazę o odpowiednie zależności, które w starszych dumpach nie były zapisywane.
Pamiętaj też, że możesz użyć pg_dumpa z 8.1 do dumpowania baz ze starszych wersji serwera (pod warunkiem oczywiście, że bazę będziesz potem odtwarzał co najmniej w wersji 8.1 Postgresa ;)
Pozdrawiam!
-- Adam Buraczewski <adamb (at) nor (dot) pl> * Linux user #165585 GCS/TW d- s-:+>+:- a C+++(++++) UL++++$ P++ L++++ E++ W+ N++ o? K w-- O M- V- PS+ !PE Y PGP+ t+ 5 X+ R tv- b+ DI D G++ e+++>++++ h r+>++ y?
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
zanotowane.pldoc.pisz.plpdf.pisz.plbajkomoda.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|