Ruby on rails 当我运行rake db:test:prepare时,PostgreSQL数据库被删除

Ruby on rails 当我运行rake db:test:prepare时,PostgreSQL数据库被删除,ruby-on-rails,ruby-on-rails-3,postgresql,rake,Ruby On Rails,Ruby On Rails 3,Postgresql,Rake,在我的rails 3应用程序中,每当我在本地开发环境中运行rake db:test:prepare时,我的PostgreSQL数据库就会被删除,我会收到以下消息: Chriss-MacBook-Pro-2:castingflow Fif$ rake db:test:prepare rake aborted! PG::ObjectInUse: ERROR: database "Fif" is being accessed by other users DETAIL: There are 3 o

在我的rails 3应用程序中,每当我在本地开发环境中运行rake db:test:prepare时,我的PostgreSQL数据库就会被删除,我会收到以下消息:

Chriss-MacBook-Pro-2:castingflow Fif$ rake db:test:prepare
rake aborted!
PG::ObjectInUse: ERROR:  database "Fif" is being accessed by other users
DETAIL:  There are 3 other session(s) using the database.
: DROP DATABASE IF EXISTS "Fif"
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/connection_adapters/postgresql_adapter.rb:650:in `exec'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/connection_adapters/postgresql_adapter.rb:650:in `block in execute'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activesupport-3.2.15/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/connection_adapters/postgresql_adapter.rb:649:in `execute'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/connection_adapters/postgresql_adapter.rb:772:in `drop_database'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/railties/databases.rake:623:in `drop_database'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/railties/databases.rake:532:in `block (3 levels) in <top (required)>'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active_record/railties/databases.rake:559:in `block (3 levels) in <top (required)>'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/bin/ruby_executable_hooks:15:in `eval'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => db:test:load => db:test:purge
(See full trace by running task with --trace)
Chriss-MacBook-Pro-2:castingflow Fif$rake db:test:prepare
雷克流产了!
PG::ObjectUse:错误:其他用户正在访问数据库“Fif”
详细信息:还有3个其他会话正在使用数据库。
:如果存在“Fif”,则删除数据库
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/connection\u adapters/postgresql\u adapter.rb:650:in'exec'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/connection\u adapters/postgresql\u adapter.rb:650:in'block in execute'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/connection\u adapters/abstract\u adapter.rb:280:在“日志中的块”中
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activesupport-3.2.15/lib/active\u support/notifications/instrumenter.rb:20:in'instrument'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/connection\u adapters/abstract\u adapter.rb:275:在“日志”中
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/connection\u adapters/postgresql\u adapter.rb:649:in'execute'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/connection\u adapters/postgresql\u adapter.rb:772:在“drop\u数据库”中
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/railties/databases.rake:623:in'drop\u database'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/railties/databases.rake:532:in `块(3层)in'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.15/lib/active\u record/railties/databases.rake:559:in `块(3层)in'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/bin/ruby\u executable\u hooks:15:in'eval'
/Users/Fif/.rvm/gems/ruby-1.9.3-p448/bin/ruby\u executable\u hooks:15:in`'
任务:TOP=>db:test:load=>db:test:purge
(通过使用--trace运行任务查看完整跟踪)

我知道还有其他会话使用数据库,但为什么数据库会因此而被删除?当我在开发环境中使用sqlite时,这种情况从未发生过。如何修复此问题?

如果有连接的用户,PostgreSQL将不允许您删除数据库。我不知道,但也许SQLite不在乎。“Fif”是您的测试数据库吗?或者你的开发数据库?这有点奇怪,你会有3个连接到你的测试数据库,除非你有一些自动化的测试框架,比如guard/zeus,等等


无论如何,您都需要关闭这些数据库,以便重新创建该数据库。

啊,我的测试、开发和生产数据库是“Fif”。重命名了它们,我再也不会收到那个错误了。谢谢