我正在尝试进行一些数据库实验,在这些实验中,作为Rails runner
脚本的一部分,我几次重置了数据库。这是一个简单的示例:
`rake db:reset`
puts User.count
`rake db:reset`
此操作失败,并显示:
PG::ObjectInUse: ERROR: database "my_db" is being accessed by other users
DETAIL: There is 1 other session using the database.
我理解为什么会这样。 User.count
打开连接,因此无法进行重置。我尝试了一些关闭上述连接的方法,包括调用close
和reset_active_connections!
无济于事。知道我该如何实现吗?其他一些尝试也没有取得成果,例如尝试通过将进程ID传递给psql来关闭连接。
答案 0 :(得分:1)
正确的电话是:
ApplicationRecord.connection_pool.connections.map &:disconnect!
我只是第一次没有找到正确的方法,不得不更详细地阅读AR代码才能找到它。