pg_dump чудит

untied

Сдвинутый новичок
Временами приходится переносить данные с помощью этой чудо-программы.

Выяснил пару интересных моментов.

1. Если восстановить данные из дампа при отсутствии таблицы (т.е. во время дампа таблица создается), то потеряется PRIMARY KEY. Во вновь созданной таблице его не будет. Т.е. нужно вначале создать таблицу со всеми кеями, потом делать в нее дамп данных.

2. После восстановления данных (в заранее созданную таблицу) сбивается последовательность SERIAL. Т.е., допустим, в таблице есть запись с идентификатором "1". При попытке добавить данные, Postgres пытается добавить запись с уже существующим идентификатором и начинает ругаться на себя же. После нескольких безуспешных попыток ВНЕЗАПНО запись добавляется, и дальше все успешно работает.

Что за притча? (стоит PostgreSQL 8.4)
Есть вообще нормальные средства дампа данных для Postgres, типа Sypex для MySQL ???
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
PK и SERIAL не теряются, я создавал дампы много раз больше 5 лет и никогда никаких потерь не было.
 

untied

Сдвинутый новичок
А вот подишь ты! Проверено неоднократно.
Может быть оттого, что данные переносятся с 8.3 на 8.4 ?????
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
А вот подишь ты! Проверено неоднократно.
Может быть оттого, что данные переносятся с 8.3 на 8.4 ?????
При переносе данных рекомендуют снимать дамп pg_dump'ом старшей версии. Т.е. в твоём случае 8.4.

Ну и как бы согласен с grigori проблем наблюдать не приходилось. Вообще, в процессе разворачивания ошибки не валятся? Т.е. тот же primary key может не создаваться из-за битых --- дублирующихся --- данных в столбцах, например. Аналогично setval() в конце дампа может не отработать из-за ошибок в начале.
 
Сверху