From: | Sysadmin <linux(at)alteeve(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | PostgreSQL General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Manually clearing "database "foo" is being accessed by other users" |
Date: | 2007-09-20 20:03:32 |
Message-ID: | 46F2D214.4080402@alteeve.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Tom Lane wrote:
> Sysadmin <linux(at)alteeve(dot)com> writes:
>> I'm finding that routinely when I try to reload a database on a server
>> where I know there are no connections to a given DB I get the error:
>
>> $ dropdb foo && createdb foo -O bar && psql foo -f /path/to/db.out
>> dropdb: database removal failed: ERROR: database "foo" is being
>> accessed by other users
>
> If it says there are other connections, then there really are other
> connections --- there are not any known bugs in that logic.
>
> What I am wondering though is whether you are allowing for the nonzero
> exit time of a backend process. If the above is part of a script that
> was just doing something in database foo, then the drop could fail
> because the backend that was serving that session is still cleaning up.
> The quickest solution is a 'sleep 1' (or so) before the dropdb.
>
> (FWIW, 8.3 will have some delay built in here to help mask this issue.)
>
> regards, tom lane
Thanks Tom,
In this case no, it's not part of a script. I was doing this manually
at the OS shell. This error has happened many times, and restarting the
postgres server always clears it and lets me continue.
Is there a way to tell Postgres to terminate any existing connections
to a given DB to avoid the need to restart the entire server?
Madi
From | Date | Subject | |
---|---|---|---|
Next Message | Steve Crawford | 2007-09-20 20:03:46 | PG levels vs. syslog levels |
Previous Message | Robert Fitzpatrick | 2007-09-20 19:54:35 | Re: autovacuum |