我正在使用Rails 4.1和PostgreSQL,我使用foreigner gem来创建外键约束。但我在fixtures时遇到了一些问题。
当我跑步时:
spring rake test
我收到如下错误:
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: update or delete on table "pessoas" violates foreign key constraint "pacientes_pessoa_id_fk" on table "pacientes"
DETAIL: Key (id)=(980190962) is still referenced from table "pacientes".
: DELETE FROM "pessoas"
我找到了一种解决方法:重新创建数据库:
RAILS_ENV=test spring rake db:reset && spring rake test
当我尝试使用rake db:fixture:load
使用灯具为开发数据库播种时,我遇到了一些错误。
我已经尝试更改test_helper.rb
中的灯具装载顺序,但这还不够。
有人知道如何解决这个问题吗?我在网上搜索了很多,但没有找到解决方案。
答案 0 :(得分:2)
所以,我知道这确实有效,但我不能说这是一个实际的正确解决方法。
您需要让用户成为SUPERUSER。
在我使用Cloud 9的情况下,我登录的用户是“ubuntu”。
我输入sudo -u postgres psql(实际上sudo两次让C9正确访问)并输入:
ALTER USER ubuntu SUPERUSER;
退出,它会起作用。
如果运行tail log / test.rb,则在运行集成测试时可能会看到PG :: InsufficientPrivlege:ERROR,因此用户没有足够的权限。你不想在制作中这样做,但我的作品是在Heroku上,所以我很好。