Rails Migrations: próbowano zmienić typ kolumny z string na integer
Stworzyłem tabelę w mojej aplikacji szynowej z poleceniem generowania migracji szyn. Oto plik migracji:
<code>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 </code>
Potem chciałem zapisać szerokość i długość geograficzną jako liczby całkowite, więc próbowałem uruchomić:
<code>rails generate migration changeColumnType </code>
a zawartość tego pliku to:
<code>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 </code>
Spodziewałem się zmiany typu kolumny, ale prowizja została przerwana i pojawił się następujący komunikat o błędzie. Zastanawiałem się, dlaczego to nie nastąpiło? Używam postgresql w mojej aplikacji.
<code>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) </code>
UWAGA: Tabela nie ma danych. Dzięki