Upgrade PostgreSQL 7.4 na 8.4 rubrika: Databáze: SQL

4 havran
položil/-a 2.7.2014

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).

odkaz Vyřešeno
9 pavel.stehule
odpověděl/-a 1.7.2014

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.

Komentáře

  • pavel.stehule : K té chybě bych si tipnul, že 7.4 databáze byla špatně nakonfigurovaná - kódování LATIN1 a locale sk_SK.utf8. To je kombinace, která nemůže fungovat - a proto to křičí. Pokud je databáze v LATIN1, pak by fakticky nemělo obsahovat asi Slovenštinu, bo ta by měla vyžadovat LATIN2 - prostě bordel v kódování. 2.7.2014

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.