2013-04-16 207 views
2

我有一个本地的PSQL数据库设置,并有问题获得耙分贝:迁移到正常运行。例如,我的数据库已经有它high_school列名改为high_school_name,但耙分贝:迁移失败,状态显示如下:Rails迁移 - rake db:status表示迁移已关闭,但数据库已迁移?

up  20130307043554 Adding seo tables 
up  20130307185401 Create admin notes 
up  20130307185402 Move admin notes to comments 
up  20130308160956 Add active flad to users 
up  20130308214928 Add column public to users table 
up  20130325203837 Add duration to videos 
up  20130326171803 Update duration of videos 
down 20130410145000 Fix high school name 
up  20130410145028 Add high school id to users 
up  20130410161705 Convert units for stats 
up  20130410164209 ********** NO FILE ********** 
up  20130416142844 Add column coach id to users 

为什么在迁移顺序没有中间的迁移/被视为“失望”?这里的错误:

Migrating to AddingSeoTables (20130307043554) 
Migrating to CreateAdminNotes (20130307185401) 
Migrating to MoveAdminNotesToComments (20130307185402) 
Migrating to AddActiveFladToUsers (20130308160956) 
Migrating to AddColumnPublicToUsersTable (20130308214928) 
Migrating to AddDurationToVideos (20130325203837) 
Migrating to UpdateDurationOfVideos (20130326171803) 
Migrating to FixHighSchoolName (20130410145000) 
(0.1ms) BEGIN 
== FixHighSchoolName: migrating ============================================== 
-- rename_column(:users, :high_school, :high_school_name) 
(0.4ms) ALTER TABLE "users" RENAME COLUMN "high_school" TO "high_school_name" 
PG::Error: ERROR: column "high_school" does not exist 
: ALTER TABLE "users" RENAME COLUMN "high_school" TO "high_school_name" 
(0.1ms) ROLLBACK 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

PG::Error: ERROR: column "high_school" does not exist 
: ALTER TABLE "users" RENAME COLUMN "high_school" TO "high_school_name" 

很明显,有一个架构问题或什么。 Schema通过远程分支进行跟踪,所以我不知道问题出在哪里。

回答

3

我怀疑下来不能正确处理列重命名更改,除非只是添加或删除列。

您可能希望考虑的一个选项实际上是使用SQL更改名称。例如,如果迁移到high_schoolhigh_school_name失败并且数据库本身当前有high_school_name,请将其重命名为(在SQL中)为high_school,然后尝试运行迁移。这可能是您的一个选择。

+0

谢谢!这工作。 – trevorhinesley

0

在列名正在重命名的行的末尾添加重复零次数