我尝试将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
答案 0 :(得分:8)
其他答案都是正确的,但您也可以使用:using
关键字:
change_column :items, :price, :integer, using: 'price::integer'
答案 1 :(得分:2)
如果您确定字符串列中的数据可以转换为整数,那么请继续对迁移进行此更改:
change_column :items, :price, 'integer USING CAST(price AS integer)'
答案 2 :(得分:2)
使用此代码:
change_column :table_name, :column_name, 'integer USING CAST(column_name AS integer)'
有关详细信息,请访问此网站how-to-change-columns-from-string-to-integer
答案 3 :(得分:0)
class ChangePriceTypeInItems < ActiveRecord::Migration
safety_assured
def change
# Take the back-up of your data first
Item.update_all(price: nil)
change_column :items, :price, :integer, using: 'price::integer'
end
end