我在向表中添加非空列时遇到了问题。我阅读了很多关于这个问题的帖子,它应该是正确的。
迁移代码:
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...
我不知道为什么它不起作用。我应该如何正确编写更改方法?
提前致谢。
更新: 这是我的大错。在这个表中,我有一条记录...我清空了表并进行了迁移。现在它可以工作了。对于我的愚蠢和浪费你们的时间,我很抱歉。
add_column :individual_trainings, :start_on, :time, default: false
,然后尝试看看是否有效。 - ciaobenchange_column :individual_trainings, :start_on, :datetime, null: false
如果你没有任何记录,那么就非常奇怪了。你确定吗?你可以通过 postico 或 psql 检查一下。也许你有一些隐藏的记录,我不确定。xD - Adriano Tadao