2

ローカルの PSQL データベースをセットアップしていますが、rake db:migrate を正しく機能させるのに問題があります。たとえば、私のデータベースではすでに high_school カラム名が high_school_name に変更されていますが、rake db:migrate は失敗しており、ステータスは次のようになっています。

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"

明らかに、スキーマの問題か何かがあります。ただし、スキーマはリモート ブランチ経由で追跡されるため、問題がどこにあるのかわかりません。

4

2 に答える 2

3

列を追加または削除するだけでない限り、ダウンは列の名前変更の変更を正しく処理できなかったと思われます。

検討したいオプションの 1 つは、実際に SQL で名前を変更することです。たとえば、変更high_school先の移行が失敗しhigh_school_name、データベース自体が現在. これはあなたにとって1つのオプションかもしれません。high_school_namehigh_school

于 2013-04-16T20:18:04.463 に答える
0

列の名前を変更する行の最後に resque nil を追加します

于 2013-04-16T20:18:35.557 に答える