如何在迁移轨道中更改 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
我使用 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