我在rails应用程序中使用rails generate migrations命令创建了一个表。下面是迁移文件:Rails Migrations:试图将列的类型从字符串更改为整数
class CreateListings < ActiveRecord::Migration
def change
create_table :listings do |t|
t.string :name
t.string :telephone
t.string :latitude
t.string :longitude
t.timestamps
end
end
end
然后我想存储的纬度和经度为整数所以 我试图运行:
rails generate migration changeColumnType
和该文件的内容是:
class ChangeColumnType < ActiveRecord::Migration
def up
#change latitude columntype from string to integertype
change_column :listings, :latitude, :integer
change_column :listings, :longitude, :integer
#change longitude columntype from string to integer type
end
def down
end
end
我期待列类型改变,但耙子被中止,并出现以下错误消息。我想知道为什么这没有通过?我在我的应用程序中使用postgresql。
rake db:migrate
== ChangeColumnType: migrating ===============================================
-- change_column(:listings, :latitude, :integer)
rake aborted!
An error has occurred, this and all later migrations canceled:
PG::Error: ERROR: column "latitude" cannot be cast to type integer
: ALTER TABLE "listings" ALTER COLUMN "latitude" TYPE integer
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
注意:该表没有数据。 感谢
确保您有它没有数据,你可以尝试做一回退 – 2012-04-27 01:03:16
如果没有数据可以直接删除列,并将它们与正确类型重新添加。经纬度的整体度非常大,所以您可能想要考虑这些列真正需要的类型。 – 2012-04-27 01:36:08