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 に答える