PostgreSQL ОШИБКА: повторяющееся имя соединения - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть функция, и после добавления некоторых изменений я начал получать ERROR: duplicate connection name Функция отброшена и создана новая

Здесь Моя функция

create extension dblink;
create or replace function Log_Save (Moderator integer, Subject varchar(32), ID_Subject integer, LogAction varchar(64), LogText varchar(4000)) 
returns void as $$
begin
    perform dblink_connect('pragma','dbname=myDbName');
    perform dblink_exec('pragma','insert into "Log" ("Moderator", "Subject", "ID_Subject", "Text", "Action", "LogDate") values (' || 
                        Moderator || 
                        ', ''' || Subject || ''',' || 
                        ID_Subject || 
                        ',''' || LogText || ''', ''' || 
                        LogAction || ''', ''' || now() || ''');');
    perform dblink_exec('pragma','commit;');
    perform dblink_disconnect('pragma');
end; $$ 
language plpgsql;

Я улавливаю ошибку при запуске

select Log_Save(1, 'User', 1, 'Update', 'Name: Name1 > Name2')

Как это решить?

UPDATE Я изменил имя с pragma на другое имя, и оно продолжает работать. Но почему это случилось, я не знаю. Мне не нужен другой db_link, я хочу использовать старый. Список соединений db_link_, которые я получил через SELECT dblink_get_connections();

1 Ответ

0 голосов
/ 01 февраля 2019

Вероятно, это связано с тем, что функция обнаружила ошибку и не запустила отключение.

Тогда как «прагма» уже использовалась, при повторном запуске функции у вас возникла эта ошибка.

Попробуйте:

SELECT dblink_disconnect('pragma');

Затем снова запустите вашу функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...