2016-12-21 8 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 업데이트 :

나는 이전 19 019_add_last_unique_story_to_user.rb 실행 버전 18에서 19를,하지만 열은 추가되지 않습니다 : state_table 테이블. 이 문제점은 프로덕션 및 로컬 데이터베이스 모두에 존재합니다. 여러 번 마이그레이션을 시도하고 db url이 올바른지 확인했습니다.

내 빠른 수정

: 나는 복사하여 마이그레이션, 020_test.rb에 위의 코드를 붙여, 내 레이크 마이그레이션 작업 rake db:migrate:up을 달렸다. 이렇게하면 데이터베이스가 성공적으로 업데이트되었습니다.

여기에서 무슨 일이 벌어 질지 아는 사람이 있습니까? 일부 마이그레이션이 성공적으로 실행되고 마이그레이션 버전을 업데이트하지만 어떤 열도 업데이트하지 않는 이유는 무엇입니까? 이것이 명명 문제, 캐싱 문제 또는 Heroku 문제 일 수 있습니까? 도와 주셔서 감사합니다!

답변

1

레이크 작업의 작성 방법에 따라 다릅니다. 후계자는 레이크 작업을 제공하지 않으므로 레이크 작업이 어디서 왔는지 확인해야합니다.

일반적으로 마이그레이션에서 열을 추가하지 않는 유일한 이유는 마이그레이션이 실행되지 않은 경우뿐입니다. 예를 들어 데이터베이스의 스키마 버전이 이미 19 인 경우 마이그레이션 할 때 마이그레이션을 실행하지 않습니다. 마이그레이션을 마이그레이션 20으로 복사 한 다음 마이그레이션 할 때 마이그레이션이 실행 된 이유를 설명합니다. 데이터베이스 로거를 사용하여 마이그레이션 프로그램을 실행하면 Sequel은 (SQL과 함께) 마이그레이션 작업을 기록합니다.