2016-08-15 4 views
0

최근에 내 schema.rb 파일을보고 내 데이터베이스에 존재하는 특정 열이 나타나지 않고 일부 테이블이 누락되었다는 사실에 놀랐습니다. 누락 된 열은 "def change add_column"마이그레이션을 통해 데이터베이스에 추가되었지만 추가 된 일부 열은 schema.rb에 예상대로 나타납니다.왜 내 schema.rb 파일이 업데이트되지 않습니까?

자세히 살펴보면 사용자 테이블을 만든 이후 schema.rb가 업데이트되지 않았다는 것을 알게되었습니다.

20151019205241_create_users.rb :

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :name 
     t.string :email 
     t.timestamps null: false 
    end 
    end 
end 

이 실제로 나에게 문제가 발생하지 않은,하지만 난 schema.rb이 자동으로 유지 업데이트 될 줄 알았는데, 그것이 중요하다고이 업데이트 한 것으로 데이터베이스를 재 작성하십시오. 누구나 왜 업데이트되지 않을지 알아낼 수 있습니까?

하나의 가능성은 데이터베이스를 sqlite3에서 postgresql으로 전환 할 때 업데이트가 중지되었다는 것입니다. 나는 정확하게 기억하지 못한다. 그러나 나는 타이밍이 의미가 있다고 생각한다.

+0

데이터베이스가 'schema.rb'와 어떻게 상호 작용하는지 잘 모르겠습니다. 'rake db : migrate'를 할 때 파일이 올바르게 업데이트됩니까? (이 레이크 작업을 성공적으로 실행하기 위해 새 마이그레이션을 추가 할 필요가 없습니다.) – Raffael

+0

그렇지 않습니다. 다음 번에는 데이터베이스를 어떤 방식으로 업데이트하여 이것을 테스트 해 보겠습니다. 지금 당장 @smefju의 솔루션이 효과가있었습니다. 답장을 보내 주셔서 감사합니다! 맞습니다. 데이터베이스를 전환하는 것과 아무 관련이없는 것으로 보입니다. –

답변

2

rake db:schema:dump을 사용하면 현재 데이터베이스 구조에서 파일을 다시 만들 수 있습니다.

스키마 파일은 드라이버와 독립적이므로 sqlite3에서 PostgreSQL로 마이그레이션하는 것은 중요하지 않습니다. 파일에 정의 된 version이 현재 날짜보다 크지 않은지 확인하십시오. 전체 파일을 질문의 스 니펫에 추가 할 수도 있습니다.

+0

고마워, 이거 고쳐! –

관련 문제