3 回答

TA贡献1806条经验 获得超8个赞
首先,您应从数据库中分离所有连接。默认情况下,您使用开发环境。然后尝试使用以下方法重置数据库:
rake db:reset
rake db:reset任务将删除数据库并重新设置。这在功能上等同于rake db:drop db:setup。
这与运行所有迁移不同。它将仅使用当前schema.rb文件的内容。如果无法回滚迁移,则rake db:reset可能对您没有帮助。要了解有关转储模式的更多信息,请参阅“模式转储和您”部分。Rails文件
如果技巧不起作用,请删除数据库,然后重新创建数据库,迁移数据,如果有种子,请播种数据库:
rake db:drop db:create db:migrate db:seed
或简而言之(从3.2开始):
rake db:migrate:reset db:seed
由于db:migrate:reset暗示删除,因此创建和迁移数据库。因为默认的环境rake是development,所以如果您在规格测试中看到异常,则应该为测试环境重新创建db,如下所示:
RAILS_ENV=test rake db:drop db:create db:migrate
或仅加载迁移的方案:
RAILS_ENV=test rake db:drop db:create db:schema:load
在大多数情况下,测试数据库是在测试过程中播种的,因此db:seed不需要通过任务操作。否则,您应该准备数据库(在Rails 4中已弃用):
rake db:test:prepare
然后(如果确实需要):
RAILS_ENV=test rake db:seed
在较新版本的Rails上,可能会出现错误ActiveRecord :: NoEnvironmentInSchemaError,因此只需在数据库环境设置任务之前添加任务:db:environment:set即可:
RAILS_ENV=test rake db:environment:set db:drop db:create db:migrate

TA贡献1785条经验 获得超4个赞
我遇到此错误,并且在研究后发现PG无法定义的错误关系用户不存在错误的原因之一是:
此错误是迁移错误。您可能已经创建了具有某些数据库属性的新模型。创建模型后,您必须将属性迁移到Rails应用模式。
如果使用本地计算机进行开发,则可以使用命令
rake db:migrate
如果您使用的是heroku
heroku run rake db:migrate

TA贡献1818条经验 获得超8个赞
您的测试数据库尚未准备好用于rspec。
准备用于rspec的测试数据库以修复此错误
RAILS_ENV=test rake test:prepare
它将删除,创建迁移并将其添加到测试数据库
如果rake任务中止并显示类似“ PG :: Error:ERROR”的消息:其他用户正在访问数据库“ [your_db_test]”,请执行此操作
RAILS_ENV=test rake db:migrate
- 3 回答
- 0 关注
- 1112 浏览
添加回答
举报