Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PostgreSQL ERROR: duplicate connection name

I have a function, and after added some changes, I started to get ERROR: duplicate connection name Function dropped and created new one

Here My function

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;

I catch error when run

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

How to solve it?

UPDATE I changed name from pragma to another name and it continue to work. But why it's happen I don't know. I don't need another db_link I want to use old one. List of db_link_connections I got via SELECT dblink_get_connections();

like image 827
Igor Cova Avatar asked Oct 26 '25 21:10

Igor Cova


1 Answers

This was probably because the function encountered an error et not run the disconnection.

Then as 'pragma' was already used, when you run again the function you had this error.

Try :

SELECT dblink_disconnect('pragma');

Then run again your function.

like image 168
akelwood Avatar answered Oct 29 '25 13:10

akelwood



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!