我在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