我在向表中添加不可为空的列时遇到问题。 我看了很多关于这个的帖子,它应该是正确的。
迁移代码:
def change
add_column :individual_trainings, :start_on, :time
add_column :individual_trainings, :end_on, :time
change_column_null :individual_trainings, :start_on, false
change_column_null :individual_trainings, :end_on, false
end
错误:
PG::NotNullViolation: ERROR: column "start_on" contains null values...
我不知道为什么不起作用。我应该如何更正写入更改方法?
提前致谢。
更新: 这是我的大错。我在这张表中有一条记录......我清除了表并迁移了。现在它正在工作。很抱歉我的愚蠢和浪费你的时间。
最佳答案
如果您的 individual_trainings
表中没有任何记录,您的迁移就会成功。
因为你的表中有记录,当你添加 start_on
列时,列值立即设置为 null
然后你强加 NOT NULL
对其进行约束。这就是您收到此错误的原因。
解决方案:
只需在添加 start_on
或 end_on
列时设置默认值(null 除外),然后继续迁移以强制执行 NOT NULL
约束。
关于ruby-on-rails - 向现有表添加非空列的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37136663/