我只是将我的美国服务器迁移到heroku
上的欧盟地区,restore
将旧的database backup
迁移到新服务器。不幸的是,我得到以下error
,而试图insert an new row
的表之一
INSERT INTO "users" ("created_at", "id", ...) VALUES ($1, $2, ...) [["created_at", Thu, 13 Oct 2016 23:53:17 CEST +02:00], ["id", nil], ...]
ActiveRecord::StatementInvalid: PG::NotNullViolation: ERROR: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, ...)
字符串
我的架构如下所示
create_table "users", :id => false, :force => true do |t|
t.integer "id", :null => false
t.datetime "created_at", :null => false
...
end
型
我该如何解决此问题?
3条答案
按热度按时间gr8qqesn1#
我已经尝试了以下解决方案来解决这个问题,我写下那些需要它的人。
解决方案#1
删除本地数据库
字符串
运行迁移
型
现在使用
--data-only
选项导入生产数据库型
lose all my data
,所以this is not an suitable one
。*解决方案#2(工作正常)
在观察到错误后,我明白了一些事情,比如主键序列被打破,系统不应该尝试在ID字段中插入空值,以及我的
model forgot the primary key
。然后通过模型和它的working fine
得到Iset the primary key
。型
ijnw1ujt2#
我也遇到了同样奇怪的问题,并通过你第一个解决方案的一个轻微变体解决了它:
字符串
然后,
型
最后
型
这样,它保持了数据库结构,只恢复数据,但是,通过不检查外键约束,它可以加载表,并且不会以一堆空表结束。
0g0grzrc3#
针对上述问题进行变通。我也有同样的问题,这个很有效
字符串