ALTER TABLE lhm migration删除现有值

SG *_* 86 8 mysql sql migration ruby-on-rails alter-table

require 'lhm'

class RenameField1ToField2ForTable < ActiveRecord::Migration
  def up
    Lhm.change_table :table do |m|
      m.ddl("ALTER TABLE %s CHANGE COLUMN field1 field2 FLOAT DEFAULT NULL AFTER field3" m.name)
    end
  end

  def down
    Lhm.change_table :table do |m|
      m.ddl("ALTER TABLE %s CHANGE COLUMN field2 field1 FLOAT DEFAULT NULL AFTER field3" m.name)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

发生了什么事:

  1. Rails-4.0:rake db:migrate
  2. Field已成功重命名.
  3. 所有现有的字段值都会被删除,为什么?有任何想法吗?

编辑:

  • 旧的数据类型是 float(11)
  • MYSQL 5.6

rii*_*rii 0

你能像这样进行直线迁移吗:

def change
  rename_column :table_name, :old_column, :new_column
end
Run Code Online (Sandbox Code Playgroud)

我从未使用过 lhm 所以这可能不可能?

此外,如果数据库中已经指定了“FLOAT DEFAULT NULL”,则您可能不需要当前 SQL 语句中的“FLOAT DEFAULT NULL”。

希望有帮助。