ruby-on-rails – 如何将字符串列更改为bigint?

在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,:limit => 8
change_column :ip_to_countries,: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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...