1
>>> import subprocess, sqlalchemy
>>> engine = sqlalchemy.create_engine("postgresql+psycopg://myuser:secret@localhost/mydb")
>>> subprocess.Popen(['/usr/bin/dropdb', '-U', 'myuser', 'mydb'])
dropdb: database removal failed: ERROR:  database "openstack_citest" is being accessed by other users                                                        
DETAIL:  There are 1 other session(s) using the database.

我检查了哪个用户正在使用数据库,并且是试图删除它的用户。

我可以通过engine.dispose()拨打电话来解决这个问题,但我不知道为什么。首先不应该有任何打开的数据库连接。

在没有调用的情况下尝试与mysql后端工作相同的事情dispose()可以很好地删除数据库。

4

1 回答 1

2

这是设计使然

DROP DATABASE 删除数据库。[...]。此外,当您或其他任何人连接到目标数据库时,它无法执行

于 2013-01-10T13:35:35.390 回答