在我的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 表中,我销毁了所有数据。那么,任何人都可以告诉我我该怎么做?或者我必须创建两个迁移文件?