0

我已经编写了我的迁移文件来更改列类型,如下所示

class ChangeColumnTypeInMyTable < ActiveRecord::Migration
   def self.up




     execute <<-SQL
       ALTER TABLE batches
         ALTER COLUMN updated_by int
      SQL

     execute <<-SQL
        ALTER TABLE batches
          ALTER COLUMN created_by int
     SQL

 end

def self.down
  end
end

但这给了我一个错误,说PG::SyntaxError: ERROR: syntax error at or near "int" LINE 2: ALTER COLUMN updated_by int 我找不到错误。先感谢您

4

3 回答 3

1

ALTER COLUMN updated_by TYPE int USING (updated_by::integer)

将 varchar 字段的类型更改为整数:“不能自动转换为整数类型”可能会有所帮助。

于 2013-09-10T11:26:31.193 回答
0

由于您使用的是 SQL,因此在这种情况下您需要使用 ActiveRecord:

def self.up
connection = ActiveRecord::Base.connection()
connection.execute(put_your_sql_query_here)
end

希望休息你可以很容易地弄清楚。

于 2013-09-10T11:38:45.673 回答
0

我想这里需要 TYPE 这个词...

参考:http ://www.postgresql.org/docs/8.0/static/sql-altertable.html

class ChangeColumnTypeInMyTable < ActiveRecord::Migration

  def self.up
    execute <<-SQL
     ALTER TABLE mt940_batches
     ALTER COLUMN updated_by TYPE int
    SQL

    execute <<-SQL
     ALTER TABLE mt940_batches
     ALTER COLUMN created_by TYPE int
    SQL
  end

  def self.down
  end
end
于 2013-09-10T11:32:50.953 回答