如何在迁移轨道中更改 postgresql 上的列?

how alter a column on postgresql in migration rail?

我使用 Rails 3.12。另外,我使用 PostgreSQL。 我会在迁移时更改我的字段的默认值。

change_column :tables, :field, :integer, :default => nil
change_column_default :tables, :field,nil

我测试了这些指令,但其中 none 行得通。

你能帮帮我吗? 谢谢

您的命令应该有效。我认为第二个更可取。但是,可能是当您生成迁移时,如:

rails g migration change_column_default :tables, :field, nil

它会在你的migrate目录下生成一个迁移文件,在db目录里面,但是如果你检查生成的迁移文件是空的。我不知道为什么会这样。所以当你 运行

 rake db:migrate

实际上什么都没做。

我认为你应该做的:

进入迁移目录中生成的迁移文件并添加:

change_column_default :tables, :field, nil

在更改方法中。 然后 运行 耙 db:migrate。 运行 rails 使用一些数据进行控制台和测试。 注意: 更改 postgresql 列的默认值不会影响现有行。它仅影响第 5.5.5 节中所述的未来插入 here