Thread: dropdb: database removal failed: active sessions
Hi,
I cannot dropdb. Postgres throws me:
dropdb: database removal failed: ERROR: database "database1" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
the "select datname,current_query,query_start from pg_stat_activity ;" query gives me:
datname | current_query | query_start
-------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------
database2 | CREATE INDEX location_object_bioseg ON location USING gist (locatedonid, bioseg_create(intermine_start, intermine_end)); | 2011-08-29 14:43:40.856594-04
database3 | <IDLE> | 2011-08-29 15:08:17.469927-04
database4 | <IDLE> | 2011-08-29 15:07:09.484543-04
database3 | <IDLE> | 2011-08-29 15:07:09.901601-04
database2 | select datname,current_query,query_start from pg_stat_activity ; | 2011-08-29 15:12:39.811168-04
database3 | <IDLE> | 2011-08-29 15:08:17.476254-04
database3 | <IDLE> | 2011-08-29 15:07:10.422579-04
database4 | <IDLE> | 2011-08-29 15:07:10.515946-04
database1 | <IDLE> | 2011-08-29 15:07:31.423596-04
Is the drop being prevented by the active query from database2? If not how can I kill the <IDLE> query that must be preventing deletion.
Thanks!
On Mon, 2011-08-29 at 15:22 -0400, JD Wong wrote: > Hi, > > I cannot dropdb. Postgres throws me: > dropdb: database removal failed: ERROR: database "database1" is being > accessed by other users > DETAIL: There are 1 other session(s) using the database. > > the "select datname,current_query,query_start from pg_stat_activity ;" query > gives me: > > datname | > current_query | > query_start > -------------------------+--------------------------------------------------------------------------------------------------------------------------+------------------------------- > database2 | CREATE INDEX location_object_bioseg ON location > USING gist (locatedonid, bioseg_create(intermine_start, intermine_end)); | > 2011-08-29 14:43:40.856594-04 > database3 | <IDLE> > | > 2011-08-29 15:08:17.469927-04 > database4 | <IDLE> > | > 2011-08-29 15:07:09.484543-04 > database3 | <IDLE> > | > 2011-08-29 15:07:09.901601-04 > database2 | select datname,current_query,query_start from > pg_stat_activity ; | > 2011-08-29 15:12:39.811168-04 > database3 | <IDLE> > | > 2011-08-29 15:08:17.476254-04 > database3 | <IDLE> > | > 2011-08-29 15:07:10.422579-04 > database4 | <IDLE> > | > 2011-08-29 15:07:10.515946-04 > database1 | <IDLE> > | > 2011-08-29 15:07:31.423596-04 > > Is the drop being prevented by the active query from database2? No, by the IDLE one from database1. > If not how > can I kill the <IDLE> query that must be preventing deletion. > You have to use the pg_terminate_backend on this connection. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On 08/29/11 12:22 PM, JD Wong wrote: > I cannot dropdb. Postgres throws me: > dropdb: database removal failed: ERROR: database "database1" is being > accessed by other users > DETAIL: There are 1 other session(s) using the database. > > the "select datname,current_query,query_start from pg_stat_activity ;" > query gives me: > > datname | > current_query > | query_start > -------------------------+--------------------------------------------------------------------------------------------------------------------------+------------------------------- > ... > database1 | <IDLE> > > | 2011-08-29 15:07:31.423596-04 > > Is the drop being prevented by the active query from database2? If > not how can I kill the <IDLE> query that must be preventing deletion. any connection to the database, even idle, will prevent a drop database. try... select pg_terminate_backend(procpid) from pg_stat_activity where datname = 'database1'; that will snuff those processes. then you can drop the database, assuming the clients don't immediately reconnect. -- john r pierce N 37, W 122 santa cruz ca mid-left coast
On Mon, Aug 29, 2011 at 2:39 PM, John R Pierce <pierce@hogranch.com> wrote: > any connection to the database, even idle, will prevent a drop database. > > try... > > select pg_terminate_backend(procpid) from pg_stat_activity where datname > = 'database1'; > > that will snuff those processes. then you can drop the database, assuming > the clients don't immediately reconnect. If you lose your connection at this point you'll know who was connected to that database as well. Yes, I have done that before.