Denis Feklushkin пишет:
On Tue, 15 Jun 2010 10:48:10 +0300
Игорь Чумак <ichumak2...@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
Можно ли как-нибудь оттрассировать, что программа пытается записать в
базу? Мож там в дизайне проблема?
--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4c173d5c.7040...@gmail.com