In my 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 表中,我销毁了所有数据。
那么,任何人都可以告诉我该怎么做?或者我必须创建两个迁移文件?
这在 Rails 4 中有效
def change
rename_column :general_exams, :semester, :semester_id
change_column :general_exams, :semester_id, :integer
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)