Всем привет.
Делаю upgrade c 9.4 на 9.5, но при апдейте вылазит ошибка в теме. Странно следующее: на старой базе extension pgcrypto не включён. Ладно, включаю и апгрейджу так:
1) на старой базе добавляю необходимый extension:
CREATE extension pgcrypto;
проверяю работу:
postgres=# SELECT digest('blah', 'sha1'); digest -------------------------------------------- \x5bf1fd927dfb8679496a2e6cf00cbe50c1c87145 (1 row)
2) инициализирую пустую базу для 9.5:
/usr/postgres/9.5/bin/amd64/initdb /var/postgres/9.5/data_64 -E utf8
3) на новой базе добавляю необходимый extension:
CREATE extension pgcrypto;
проверяю работу:
postgres=# SELECT digest('blah', 'sha1'); digest -------------------------------------------- \x5bf1fd927dfb8679496a2e6cf00cbe50c1c87145 (1 row)
4) запускаю upgrade:
/usr/postgres/9.5/bin/amd64/pg_upgrade -d /var/postgres/9.4/data_64 -D /var/postgres/9.5/data_64 -b /usr/postgres/9.4/bin/amd64 -B /usr/postgres/9.5/bin/amd64 -v
Вот полный текст ошибки:
pg_restore: [archiver (db)] could NOT execute query: ERROR: FUNCTION digest(bytea, unknown) does NOT exist LINE 2: SELECT encode(digest(convert_to($1, 'UTF8')::bytea, 'sha... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. QUERY: SELECT encode(digest(convert_to($1, 'UTF8')::bytea, 'sha1'), 'hex') CONTEXT: SQL function "sha1" during inlining Command was: -- For binary upgrade, must preserve pg_class oids SELECT pg_catalog.binary_upgrade_set_next_index_pg_class_oid('553607281'...
То ли что-то забыл, то ли какой-то баг.
Заранее спасибо.
Немного продвинулся. Теперь
Немного продвинулся. Теперь понятна стала ошибка:
Непонятно другое: зачем оно удаляет функцию digest?
Скорее всего, чтобы иметь
Скорее всего, чтобы иметь уверенность, что в БД будет именна та функция, которая нужна, а не та, которая существует.
А вообще не совсем понимаю зачем pg_upgrade? Почему не dump и восстановление?
Оно-то понятно, что ему не
Оно-то понятно, что ему не хватает, непонятно почему так происходит?
Решил попробовать одной командой сразу всё. pg_dumpall - это будет вторая попытка апдейтнуть.