Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: dilyan в Oct 25, 2006, 20:03



Титла: Postgresql unicode problem
Публикувано от: dilyan в Oct 25, 2006, 20:03
привет,
боря се със следния проблем:
Постгрес база с уникод (UTF-8), вътре мешано кирилица, латиница, работи без проблем. От 8.0.3 минавам на 8.0.8 поради бъг фиксове, memory leakage, etc. следвайки инструкцийте - спиране на постмастер-а, rpm -Uvh ...  всичко пали, върви, работи без проблем.
Правя обаче един pg_dump и после при pg_restore ми дава грешка, че в една таблица имам проблем с енкодинга - някакъв си ред съдържа неверна за енкодинга поредица. В една таблица такова нещо имам на кирилица, в друга на латиница, общо около 3-4 таблици имат такъв проблем. Въпреки, че знам на кой ред е грешката ако вляза в pg_dump архива и го изтрия/поправя после не излизат сумите на проверката и дава грешка.
Двете бази са на различни компютри но с абсолютно еднакви бази и техните конфигурации. Разликата е само, че дъмпещият е СуСЕ 10, а рестора е на СуСЕ 10.1.
Четох, че има някакви конвертор тулове за енкодинг, но все пак конвертора прехвърля от един формат в друг, а не поправа грешки в енкодинга.
Някой решавал ли е подобен проблем? Идеи?


Титла: Postgresql unicode problem
Публикувано от: gat3way в Oct 25, 2006, 23:00
iconv вероятно ще помогне за да смениш енкодинг-а на дъмп-а. Освен ако не е в "tar" формат (pg_dump -F t blabla) - последното ти създава и проблемите с чексумите предполагам?

Правиш наново дъмп-а в обикновен плейнтекст формат (pg_dump -F p blabla). После с iconv му сменяш енкодинг-а. Накрая, вкарваш дъмп-а с pg_restore.