2016-12-21 5 views
1

私のDB(基本版)には、Heroku Postgresアドオンを使用しています。 Ruby Sequelはスキーマ管理のORMです。Ruby Sequelの移行は実行中ですが、列を追加できません

最近、一部の移行でDBスキーマが更新されていません。 【:schema_info]

Sequel.migration do 
    up do 
    alter_table(:state_tables) do 
     add_column :last_unique_story, Integer, default: 0 
     add_column :last_unique_story_read?, TrueClass, default: true 
    end 
    end 
    down do 
    alter_table(:state_tables) do 
     drop_column :last_unique_story 
     drop_column :last_unique_story_read? 
    end 
    end 
end 

これは、DB更新:

Iはマイグレーション19、019_add_last_unique_story_to_user.rb実行バージョン18から19を、ない列が追加されない:state_tableテーブル。この問題は、本番データベースとローカルデータベースの両方に存在します。私は複数回の移行を試み、db URLが正しいことを確認しました。

マイクイックフィックス: 私はコピーして移行、020_test.rbに上記のコードを貼り付け、そして私のすくい移行タスクrake db:migrate:upを走りました。これにより、データベースが正常に更新されました。

ここで何が起こっているのでしょうか?一部の移行が正常に実行され、移行バージョンが更新されますが、列は更新されないのはなぜですか?これは命名の問題、キャッシングの問題、またはHerokuの問題でしょうか?ご協力ありがとうございます!

答えて

1

あなたのレーキタスクがどのように書かれているかによって異なります。 Sequelはレーキタスクを提供しないので、あなたはレーキタスクがどこから来たのか確認する必要があります。

通常、移行では列が追加されないのは、移行が実行されなかった場合のみです。たとえば、データベースのスキーマ・バージョンがすでに19の場合、移行時には移行19は実行されません。これは、マイグレーションにコピーしたときにマイグレーションを実行した理由を説明します。データベースロガーを使用してMigratorを実行すると、Sequelは移行アクティビティ(SQLに加えて)をログに記録します。

関連する問題