pg_dump и pg_restore Postgresql в разных основных версиях?

Недавно я столкнулся с (возможно, известной проблемой), когда версии Postgre отличаются по старшему номеру (всегда обновление, без понижения), например, с типами полей.

В моем случае было очень мало противоречивых данных, поэтому я изменил их вручную, но хотел узнать больше на случай, если я снова столкнусь с этой проблемой с дополнительными данными.

В этом конкретном случае (но это может быть распространено на другие возможные проблемы в будущем) я создал резервную копию, используя только вставки данных, поскольку у меня уже была сохранена структура таблицы.

Проблема возникла при обновлении с 8.x на 9.x с типом money, у меня были ошибки, потому что вставки имели значение что-то вроде

INSERT INTO foo(...) VALUES (...,'EUR300',...);

Итак, postgres отказывался вставлять это в 9.1.

Моя идея, и то, что я пробовал, состоит в том, чтобы преобразовать это поле в DECIMAL и переделать дамп, это сработало, но в будущем есть ли другой механизм, например, использование более нового pg_dump для подключения к старой базе данных вместо текущей? (Не проверял это)


person StormByte    schedule 28.08.2013    source источник


Ответы (1)


При переходе от одной версии к другой всегда следует использовать новую версию pg_dump. Это означает, что при переходе с 8.x на 9.1 вы должны использовать pg_dump версии 9.1. Обычно он должен заботиться о любых необходимых преобразованиях.

person Magnus Hagander    schedule 28.08.2013
comment
О, ты меня понял, я собирался попробовать, но я уже преобразовал его. Огромное спасибо :) - person StormByte; 29.08.2013