在我的general_exams表中,我有一个名为semester的列,type为string.现在我想将其名称改为semester_id,type为integer.我已经阅读过关于迁移的内容,它有可用的转换:
> rename_column(table_name,column_name,new_column_name):重命名列,但保留类型和内容.
> change_column(table_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_id) -> 0.0572s -- change_column(:general_exams,: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中,我销毁了所有数据.
所以,任何人都可以告诉我如何做到这一点或者我必须创建两个迁移文件?