powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / upgrade: function digest does not exist
9 сообщений из 9, страница 1 из 1
upgrade: function digest does not exist
    #39234939
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Делаю upgrade c 9.4 на 9.5, но при апдейте вылазит ошибка в теме. Странно следующее: на старой базе extension pgcrypto не включён. Ладно, включаю и апгрейджу так:
1) на старой базе добавляю необходимый extension:
Код: sql
1.
create extension pgcrypto;


проверяю работу:
Код: sql
1.
2.
3.
4.
5.
postgres=# SELECT digest('blah', 'sha1');
                   digest
--------------------------------------------
 \x5bf1fd927dfb8679496a2e6cf00cbe50c1c87145
(1 row)


2) инициализирую пустую базу для 9.5:
Код: sql
1.
/usr/postgres/9.5/bin/amd64/initdb /var/postgres/9.5/data_64 -E utf8


3) на новой базе добавляю необходимый extension:
Код: sql
1.
create extension pgcrypto;


проверяю работу:
Код: sql
1.
2.
3.
4.
5.
postgres=# SELECT digest('blah', 'sha1');
                   digest
--------------------------------------------
 \x5bf1fd927dfb8679496a2e6cf00cbe50c1c87145
(1 row)


4) запускаю upgrade:
Код: sql
1.
/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



Вот полный текст ошибки:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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'...



То ли что-то забыл, то ли какой-то баг.
Заранее спасибо.
...
Рейтинг: 0 / 0
upgrade: function digest does not exist
    #39234985
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного продвинулся. Теперь понятна стала ошибка:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
/usr/bin/strings pg_upgrade_dump_16420.custom | grep digest
digest("bytea", "text")
CREATE FUNCTION "digest"("bytea", "text") RETURNS "bytea"
    AS '$libdir/pgcrypto', 'pg_digest';
ALTER EXTENSION "pgcrypto" ADD FUNCTION "digest"("bytea", "text");
DROP FUNCTION "public"."digest"("bytea", "text");
digest("text", "text")
CREATE FUNCTION "digest"("text", "text") RETURNS "bytea"
    AS '$libdir/pgcrypto', 'pg_digest';
ALTER EXTENSION "pgcrypto" ADD FUNCTION "digest"("text", "text");
DROP FUNCTION "public"."digest"("text", "text");
retVal[I] := encode(digest(convert_to(lower(phrases[I]), 'UTF8')::bytea, 'sha1'), 'hex');
    SELECT encode(digest(convert_to($1, 'UTF8')::bytea, 'sha1'), 'hex')
retVal[I] := encode(digest(convert_to(lower(phrases[I]), 'UTF8')::bytea, 'sha1'), 'hex');
    SELECT encode(digest(convert_to($1, 'UTF8')::bytea, 'sha1'), 'hex')



Непонятно другое: зачем оно удаляет функцию digest?
...
Рейтинг: 0 / 0
upgrade: function digest does not exist
    #39235030
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletor,

Для начала уверены ли вы что у вас именно база postgres не может обновится (т.е. pg_upgrade ломается на восстановлении базы postgres)
?

Два - если у вас extension не стоит а при этом функция есть - то просто так "create extension pgcrypto;" работать не будет надо делать "create extension pgcrypto from unpackaged;"


--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
upgrade: function digest does not exist
    #39235032
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обновится не может другая база (кастомная). База postgres обновляется нормально. extension установлен (проверяю так: SELECT * FROM pg_available_extensions;), но по дефолту не добавлен, поэтому добавляю его через create extension pgcrypto;.
...
Рейтинг: 0 / 0
upgrade: function digest does not exist
    #39235057
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletor,

а зачем добавлять extension перед pg_upgrade? в 9.4 и 9.5 этот эктеншн разных версий (1.1 против 1.2), может что-то менялось внутри.
...
Рейтинг: 0 / 0
upgrade: function digest does not exist
    #39235060
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавлял потому что ругалось на его отсутствие.
...
Рейтинг: 0 / 0
upgrade: function digest does not exist
    #39235065
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletor,

а какая ошибка?
...
Рейтинг: 0 / 0
upgrade: function digest does not exist
    #39235066
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо придётся делать через pg_dumpall ((
...
Рейтинг: 0 / 0
upgrade: function digest does not exist
    #39235068
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skeletorfunction digest does not exist
function digest does not exist
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / upgrade: function digest does not exist
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]