Denis Feklushkin пишет:
On Tue, 15 Jun 2010 10:48:10 +0300 Игорь Чумак <ichumak2008@gmail.com> wrote:^^^^Добрый день!Есть софтина (prelude), которая умеет работать как с mysql, так и с postgresql. С mysql работает корректно, но очень медленно. После перехода на postgresql заработало значительно быстрее и стабильнее, но перестала сохраняться кириллица.В mysql всё хранилось в utf8. В postgresql - хз (никогда раньше с ним не работал).Через phppgadmin видно , что вместо кириллицы в таблицах строки вида \002\377\377\205\004\000\000\002\004\005\264\001\001\004\002В mysql таблица описывается так: CREATE TABLE Prelude_AdditionalData ( _message_ident BIGINT UNSIGNED NOT NULL, _parent_type ENUM('A', 'H') NOT NULL, _index TINYINT NOT NULL,type ENUM("boolean","byte","character","date-time","integer","ntpstamp","portlist","real","string","byte-string","xml") NOT NULL,meaning VARCHAR(255) NULL, data BLOB NOT NULL, PRIMARY KEY (_parent_type, _message_ident, _index) ) TYPE=InnoDB; В postgresql так: CREATE TABLE Prelude_AdditionalData ( _message_ident INT8 NOT NULL, _parent_type VARCHAR(1) CHECK (_parent_type IN ('A', 'H')) NOT NULL, _index INT2 NOT NULL, type VARCHAR(32) CHECK ( type IN('boolean','byte','character','date-time','integer','ntpstamp','portlist','real','string','byte-string','xml')) NOT NULL,meaning VARCHAR(255) NULL, data BYTEA NOT NULL,^^^^^^^^^^PRIMARY KEY (_parent_type, _message_ident, _index) ) ; Портится информация в поле data Как бы это подправить?исправить bytea на text и посмотреть что будет
Пробовал - не помогло
Не я, а авторы софтины. Подозреваю, что сделано это как раз чтобы не заморачиваться с кодировкамивообще, мне кажется неправильно использовать в sql такого типа таблицы где задаётся тип поля отдельным полем и используется bytea, но может и будет работать postgresql прозрачненько умеет кодировки конвертировать а используя bytea вы эту возможность обрезали
да, и надо посмотреть с какой кодировкой создалась база - лучше всего чтоб там utf8 было
Из того же phppgadmin: База данных Пользователь Кодировка Tablespace Size prelude postgres UTF8 pg_default 4330 MBМожно ли как-нибудь оттрассировать, что программа пытается записать в базу? Мож там в дизайне проблема?