gpt4 book ai didi

ruby-on-rails - 使用迁移将字段更改为 NOT NULL 和 NULL 字段

转载 作者:行者123 更新时间:2023-12-03 15:28:05 24 4
gpt4 key购买 nike

所以我错误地创建了一个表,其中的字段应该不是 NULL。

我需要创建一个迁移来将字段从 NULLABLE 更改为 NOT NULL,但存在一些已经为 NULL 的行。

我可以更新这些行并更改字段吗?我试过这个:

  def change
change_column :countries, :effective_date, :date, :null => false, :default => Time.now
change_column :countries, :expiry_date, :date, :null => false, :default => Time.new(9999,12,31)
end

但这失败并出现错误:

Mysql2::Error: Invalid use of NULL value: ALTER TABLE

有任何想法吗?需要同时在 mysql 和 sql server 上工作..

最佳答案

首先确保没有 NULL,然后更改约束。

选项1:

Country.where(effective_date: nil).update_all(effective_date: Time.now)
Country.where(expiry_date: nil).update_all(expiry_date: Time.new(9999,12,31))
change_column :countries, :effective_date, :date, :null => false
change_column :countries, :expiry_date, :date, :null => false

选项 2:
change_column_null :countries, :effective_date, false, Time.now
change_column_null :countries, :expiry_date, false, Time.new(9999,12,31)

关于ruby-on-rails - 使用迁移将字段更改为 NOT NULL 和 NULL 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29891099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com