在 rails 迁移中。如何将字符串类型的列更改为 bigint?
我有:
t.change :ip_number_from, :integer, :limit => 8
我得到:
PG::Error: ERROR: column "ip_number_from" cannot be cast to type bigint
我什至尝试了两种选择:
change_column :ip_to_countries, :ip_number_from, :integer, :limit => 8
change_column :ip_to_countries, :ip_number_from, :bigint
还是一样的错误
最佳答案
Postgres 告诉您该列中存在它不知道如何转换的现有数据,因此它需要一个 ALTER 语句,为该列提供一个 USING 子句以指定如何转换现有值。
不幸的是,您将需要下拉特定于数据库的代码来完成此操作,或者使用类似于此处建议的解决方案的方法:
http://webjazz.blogspot.co.uk/2010/03/how-to-alter-columns-in-postgresql.html
编辑:以下是您可以在迁移中直接在 SQL 中执行此操作的方法:
execute <<-SQL
ALTER TABLE ip_to_countries
ALTER COLUMN ip_number_from TYPE bigint USING ip_number_from::bigint
SQL
关于ruby-on-rails - 如何将字符串列更改为 bigint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380399/