【发布时间】:2016-05-10 11:03:21
【问题描述】:
我在向表中添加不可为空的列时遇到问题。 我读了很多关于这个的帖子,它应该是正确的。
迁移代码:
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试试它是否有效 -
我最近写了一个迁移来做你所做的。但就我而言,我删除了所有具有空值的记录。因为从现在开始,我们的数据库不应该接受空值。你能删除这些带有空值的记录吗?
-
@AdrianoTadao 我在这个表中没有任何记录。
-
你试过这样的事情吗?
change_column :individual_trainings, :start_on, :datetime, null: false没有记录就很奇怪了。你确定吗?您可以通过postico 或 psql 查看吗?也许你有一些隐藏的记录,我不知道。 xD
标签: ruby-on-rails ruby postgresql rails-migrations