rails generate migrationsコマンドを使用して自分のテーブルに自分のテーブルを作成しました。Rails Migrations:列のタイプを文字列から整数に変更しようとしました
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
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
そして私が実行しようとした整数として緯度と経度を格納するよう を望んでいた:ここでマイグレーションファイルということです
私は、列の種類が変更されることを期待していましたが、レーキが中止され、次のエラーメッセージが表示されました。なぜこれが進まないのだろうと思っていたのですか?私のアプリで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)
注:テーブルにはDATAはありません。 おかげ
は、あなたがその上にデータがないことを確認し、あなたが単に列を削除し、正しいタイプでそれらを再度追加することができますデータはありません場合は、ロールバック –
を作る試みることができる10進数です。緯度/経度全体がかなり大きいので、実際にどのようなタイプの列が必要か考えてみてください。 –