В моей таблице general_exams
у меня есть столбец с именем 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 я уничтожил все данные. Итак, кто-нибудь может сказать мне, как я могу это сделать? Или я должен создать два файла миграции?