将列类型更改为整数rails

问题描述 投票:4回答:3

我尝试将heroku表列从字符串更改为整数时运行了迁移:这是我的迁移:

class ChangePriceTypeInItems < ActiveRecord::Migration
  def change
    change_column :items, :price, :integer
  end
end

这是我的错误:我该怎么办?

ActiveRecord::StatementInvalid: PG::Error: ERROR:  column "price" cannot be cast automatically to type integer
HINT:  You might need to specify "USING price::integer".
: ALTER TABLE "items" ALTER COLUMN "price" TYPE integer
ruby-on-rails
3个回答
7
投票

其他答案是正确的,但您也可以使用:using关键字:

change_column :items, :price, :integer, using: 'price::integer'

2
投票

如果您确定字符串列中的数据可以转换为整数,那么请继续对迁移进行此更改:

change_column :items, :price, 'integer USING CAST(price AS integer)'

2
投票

使用此代码:

 change_column :table_name, :column_name, 'integer USING CAST(column_name AS integer)'

有关更多详细信息,请访问此网站how-to-change-columns-from-string-to-integer

© www.soinside.com 2019 - 2024. All rights reserved.