在postgres的另一场会议

时间:2016-04-07 18:26:46

标签: ruby-on-rails postgresql rspec

我正在使用rspec进行测试。我和他的朋友在他的笔记本电脑上正在做一个项目,测试正在通过。我克隆了回购并在我的笔记本电脑上运行它,所有测试都突然失败了。

所以我决定重置测试数据库。我打电话给rake db:test:prepare RAILS_ENV=test。然后,我开始收到错误说:

ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR:  database "(app name)" is being accessed by other users
DETAIL:  There is 1 other session using the database.

我查看了其他stackoverflow帖子,发现我可以使用

终止连接
  

sudo kill -9` ps -u postgres -o pid =`

这成功地杀了一些东西并在控制台上给我结果如下:

usage: kill [-s signal_name] pid ...
       kill -l [exit_status]
       kill -signal_name pid ...
       kill -signal_number pid ...

我这样做是否正确?如何成功删除其他会话?

1 个答案:

答案 0 :(得分:0)

它看起来像你正在运行的kill命令实际上是终止任何东西。我也不建议直接杀死任何postgres进程,因为这可能是不安全的。

而是尝试运行ps aux | grep rubyps aux | grep rspec在您不知情的情况下,ruby或rspec进程可能仍在运行。从那里,您可以获取该进程的进程ID(pid)并使用kill -15 <pid>将其终止。如果仍然没有停止,请使用kill -9 <pid>强制退出。