私のgeneral_exams
テーブルには、typeisという名前の列がありsemester
ますstring
。名前をに変更したいのですがsemester_id
、タイプはinteger
です。移行について読みましたが、利用可能な変換があります。
- rename_column(table_name、column_name、new_column_name):列の名前を変更しますが、タイプとコンテンツは保持します。
- change_column(table_name、column_name、type、options):add_columnと同じパラメーターを使用して、列を別のタイプに変更します。
したがって、次のように移行ファイルを作成します。
class RenameSemesterFromGeneralExams < ActiveRecord::Migration
def change
rename_column :general_exams, :semester, :semester_id
change_column :general_exams, :semester_id, :integer
end
end
しかし、実行するrake db:migrate
と、エラーが発生します。
== RenameSemesterFromGeneralExams: migrating =================================
-- rename_column(:general_exams, :semester, :semester_id)
-> 0.0572s
-- change_column(:general_exams, :semester_id, :integer)
rake aborted!
An error has occurred, this and all later migrations canceled:
PG::Error: ERROR: column "semester_id" cannot be cast to type integer
: ALTER TABLE "general_exams" ALTER COLUMN "semester_id" TYPE integer
テーブルGeneralExamで、すべてのデータを破棄しました。だから、誰でも私にそれをどのように行うことができますか?または、2つの移行ファイルを作成する必要がありますか?