【问题标题】:Rails - migrations - change_column_defaultRails - 迁移 - change_column_default
【发布时间】:2012-08-18 06:12:22
【问题描述】:

我希望通过迁移更改数据库中整数的默认值

class ChangeColumnDefault < ActiveRecord::Migration
  def self.up
    change_column_default(:persons, :age, 0)
  end
end

我也试过了:

class ChangeColumnDefault < ActiveRecord::Migration
      def change
        change_column_default(:persons, :age, 0)
      end
    end

我只是通过以下方式运行迁移:

rake db:migrate VERSION=20120822182554_change_column_default.rb

终端中没有显示错误,并且我的 schema.rb 中没有任何变化

有什么想法/提示吗??

【问题讨论】:

  • 请在运行此命令时发布终端的输出。先回滚,然后重新运行。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

也许只使用rake db:migrate VERSION=20120822182554

表名在哪里? :)

【讨论】:

  • 是的,persons 是表名——运行 rake db:migrate VERSION=20120822182554 没有区别
  • 试试change_column_default('persons', 'age', 0)
  • @Vetal4eg 同样的问题。 change_column_default 不工作。我正在使用 postgresql 并检查了数据库。没有修饰符
【解决方案2】:

我刚刚试了一下,效果很好。看起来你的桌子是 :people 而不是 :persons。对我来说,使用“def up”和“def down”也是最重要的。

【讨论】:

    【解决方案3】:

    假设您想将默认值设置为 nil 并创建了以下文件 db/migrate/20200820171322_change_default_field_on_table.rb

    # frozen_string_literal: true
    
    class ChangeDefaultFieldOnTable < ActiveRecord::Migration[5.1]
    
      def up
        change_column_default(:table, :column_name, nil)
      end
    
    end
    
    

    这应该可以解决问题,以防万一!

    【讨论】:

      猜你喜欢
      • 2015-10-11
      • 2010-10-16
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2020-10-28
      • 2015-03-01
      相关资源
      最近更新 更多