У меня проблемы с неверными байтовыми последовательностями UTF8 - PullRequest
1 голос
/ 15 сентября 2011

Я пытаюсь переместить базу данных POSTGRESQL с одного сервера на другой.Для этого я сделал pg_dump, а затем после создания новой базы данных на новом сервере я попытался восстановить файл pg_dumped.По большей части восстановление было в порядке, но затем одна таблица не копировалась.

pg_restore: [archiver (db)] COPY failed: ERROR:  invalid byte sequence for encoding "UTF8": 0x92
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

Теперь, после проверки свойств базы данных, выясняется, что исходная таблица была закодирована в SQL_ASC2, но я создал новую таблицу UTF8.Я ничего не знаю о кодировании, но разве UTF8 не совместим с ASC2?Итак, почему существует недопустимая последовательность байтов?

Будет ли решение этой проблемы изменено на новую базу данных, использующую SQL_ASC2?Если мне нужно изменить кодировку новой базы данных, как мне это сделать?Могу ли я просто изменить его или мне нужно начинать с нуля и переделывать всю базу данных?

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Перед подключением к базе данных вы можете установить client_encoding в 'LATIN9' (что это, вероятно, в любом случае: будет принято). Вы можете сделать это:

1) выдача pg_restore с флагом -f my_filename.

2) Отредактируйте полученный файл (вероятно, уже есть «SET client_encoding = 'UTF8';», присутствующий в верхней части.)

3) отправить с "psql -U username dbname

0 голосов
/ 15 сентября 2011

Если вы находитесь в поле * nix, а ваш файл pg_dump представляет собой обычный текст, то вы можете попробовать запустить файл дампа через iconv до импорта его в postgres.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...