Rails-关闭当前的数据库连接

时间:2019-12-02 21:06:26

标签: ruby-on-rails postgresql

我正在尝试进行一些数据库实验,在这些实验中,作为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打开连接,因此无法进行重置。我尝试了一些关闭上述连接的方法,包括调用closereset_active_connections!无济于事。知道我该如何实现吗?其他一些尝试也没有取得成果,例如尝试通过将进程ID传递给psql来关闭连接。


1 个答案:

答案 0 :(得分:1)

正确的电话是:

ApplicationRecord.connection_pool.connections.map &:disconnect!

我只是第一次没有找到正确的方法,不得不更详细地阅读AR代码才能找到它。