Добрый вечер!
Пытаюсь перенести бэкап базы данных с Windows 7 на Solaris10.
Итак с самого начала.
Windows 7, PostgreSQL 8.4.1: создаю бэкап из pgAdmin (на всякий случай разных типов compress, tar, plain - все с галочкой INSERT).
Solaris10, PostgreSQL 9.0.4: пытаюсь восстановить эти бэкапы через консоль:
/postgres/9.0-pgdg/bin/pg_restore -U postgres -c -d pss /export/pssbackup.sql
Ни один бэкап не восстанавливается без кучи ошибок, пробую несколько раз - не получается. Первое что заметил, через psql, в одной из главных таблиц не восстановились данные. Соответственно программа работающая с этой базой вылетает с ошибкой на данные из этой таблицы.
Пробовал поставить на Solaris версию PostgreSQL 8.4.8, тоже самое, только ошибок кажется больше.
Проверяю в Windows 7 (где бэкап создавал), через консоль восстанавливаю такой же инструкцией - все ОК, посмотрел данные на месте!
Прошу помочь!
1. Делайте дамп прогаммой
1. Делайте дамп прогаммой pg_dump или pg_dumpall. Делайте в plain text виде.
2. Восстанавливайте дамп командой psql.
Тоже самое
Все! проблема решилась!
Дело было в кодировке русских букв под Solaris'ом.
В базе данных заменил все character на character varying и увеличил их размеры в 2 раза.
Иначе выползает ошибка из-за большой длины строки и запись строки полностью отменяется и соответственно все зависящие от нее строки в других таблицах тоже не записываются.
Теперь все восстанавливается!