Upgrade PostgreSQL 7.4 na 8.4 rubrika: Databáze: SQL
Mám dump s Postgresql 7.4 (cez pg_dumpall) ktorý obsahuje databázy v mixe kódovaní LATIN2, UNICODE. Import do 8.4 prebehol skoro bez problémov len ak som nastavil pri initdb --nolocale, inak boli problémy s kódovaním. A aj tak sa mi v niektorých databázach nenaimportovali data. Existuje nejaký doporučený postup ako databázy dumpnúť aby pri importe bolo čo najmenej problémov?
Doplňujem informácie:
Podľa rady som dump spravil pomocou pg_dumpall z PostgreSQL 8.4 (cez ssh tunel z lokálnej virtuálky som si pripojil port 5432 na server kde sa majú data naimportovať). Pri importe mi zostala už len jedna chyba:
psql:postgresql-dump-z-7.4-cez-pg-dump-8.4.sql:383: ERROR: encoding LATIN1 does not match locale sk_SK.utf8 DETAIL: The chosen LC_CTYPE setting requires encoding UTF8.
A tým pádom sa mi jedna databáza nevytvorila. Skusil som vylúčiť LATIN1 (zeditoval som dump), uvidíme čo to urobí.
Edit 3:
Tak databázy sa konečne naimportovali vporiadku aspoň podľa námatkovej kontroly. Zostala mi už len táto chyba:
psql:postgresql-dump-z-7.4-cez-pg-dump-8.4.sql:10294033: ERROR: could not access file "/usr/local/lib/postgresql/plpgsql.so": Adres▒r alebo s▒bor neexistuje psql:postgresql-dump-z-7.4-cez-pg-dump-8.4.sql:10294036: ERROR: function public.plpgsql_call_handler() does not exist
Asi bude stačiť v dump súbore replace pôvodného umiestnenia "/usr/local/lib/postgresql/plpgsql.so" na " /usr/lib64/pgsql/plpgsql.so". Vyskúšam a doplním či funguje. (Pôvodne bežala databáza na i386 FreeBSD, teraz na x64 CentOS).
Základní radou je použít pg_dumpall z cílové verze - tedy ve Vašem případě z 8.4. Určitě ale import havaroval z nějakého konkrétního důvodu - a pokud chcete poradit, tak by bylo dobré napsat chybovou hlášku. Např. vím, že počínaje 8.3 se začala důkladněji testovat validita UTF znaků a pak bylo nutné editorem nevalidní znaky odstranit. Ale bez chybové hlášky těžko říct.
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře