Обновите postgresql 9.6 - ›postgresql 13 заблокирован из-за отсутствия расширения plpython2, но я не могу удалить расширение

Я пытаюсь обновить систему с Postgresql 9.6 до Postgresql 13, используя pg_upgrade, поставляемый с Postgresql 13. Это обновление завершается ошибкой:

Your installation references loadable libraries that are missing from the new installation.  You 
can add these libraries to the new installation,
or remove the functions using them from the old installation.  A list of
problem libraries is in the file:
   loadable_libraries.txt

Failure, exiting
-bash-4.2$ cat loadable_libraries.txt
could not load library "$libdir/plpython2": ERROR:  could not access file "$libdir/plpython2": No such file or directory
In database: infohub

Мне эта ошибка кажется очевидной, база данных infohub использует расширение plpython2, которое не установлено (и даже не существует) для postgresql 13.

Моя проблема в том, что я попытался удалить расширение, но pg_upgrade по-прежнему не работает с указанной выше ошибкой.

postgres=# \c infohub
psql (13.0, server 9.6.19)
You are now connected to database "infohub" as user "postgres".
infohub=# DROP EXTENSION plpythonu CASCADE ;
DROP EXTENSION

Я попытался использовать этот оператор, чтобы проверить, есть ли какая-либо функция

infohub=# select  DISTINCT l.lanname as function_language
from pg_proc p
left join pg_language l on p.prolang = l.oid
;


function_language

-------------------  
internal  
sql   
c   
plpgsql  
(4 rows)

Насколько я могу судить, нет функций, которые зависят от plpythonu (или plpython2), однако pg_upgrade по-прежнему дает мне указанную выше ошибку об отсутствующем расширении.

Приветствуется любая помощь или идея.


person user3741134    schedule 03.11.2020    source источник
comment
В новой ошибке все еще написано «В базе данных: infohub»? Может быть, его нужно сбросить более чем в одну базу данных.   -  person jjanes    schedule 03.11.2020


Ответы (1)


Выполните следующий оператор во всех базах данных:

SELECT oid::regprocedure
FROM pg_catalog.pg_proc
WHERE probin = '$libdir/plpython2';

Тогда вы узнаете, какие функции неисправны, и сможете их удалить.

person Laurenz Albe    schedule 03.11.2020
comment
Спасибо за супер полезный ответ !! - person user3741134; 03.11.2020