2012-11-14 4 views
0

db/schema.rb 파일이 rake db : migrate의 db/migrate 파일에서 가져와야한다고 말하는 것이 맞습니까? 나는 rake db : migrate를 실행 중이고 migrate 나 모델에 정의되지 않은 테이블을 추가하고 있습니다. 어떤 아이디어?Ruby on Rails - 잘못된 Schema.rb 파일 만들기?

마이그레이션 파일 (한) :

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

결과 스키마 레이크 후에는 :

ActiveRecord::Schema.define(:version => 20121113214159) do 

    create_table "user_categories", :force => true do |t| 
    t.string "title" 
    t.string "description" 

    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    end 

    create_table "users", :force => true do |t| 
    t.string "email" 
    t.string "hashed_password" 

    t.datetime "created_at",     :null => false 
    t.datetime "updated_at",     :null => false 
    end 

end 

나는 이전 비계 user_categories을 추가했지만, 잘못 그래서 그것을 파괴했다. 부품을 파손하는 데 내가 잘못 갔는지 확실하지 않습니다 ...

+0

당신이 당신의 스키마와 –

+0

거기가 당신의 마이그레이션 파일을 표시 할 수있다 변수를 정의하는 것을 잊었다. 또한, 나는 실제로 발판을 실제로 만들었지 만, 나는 그것을 파괴했다. 그것은 데이터베이스를 읽지 않을 것입니까? 나는 SQLite를 사용하고 있으며 이전에 테이블에 대한 오류가 발생하고 있었지만 오류가 발생하지는 않습니다. – jake

+0

db에 중요한 데이터가 없다면'rake db : drop'과'rake db : create'를 실행할 수 있습니다. 그런 다음'rake db : migrate'를 실행하면 스키마가 깨끗해진다. –

답변

3

db에 중요한 데이터가없는 경우 rake db:drop, rake db:create을 실행할 수 있습니다. 그런 다음 rake db:migrate을 실행하면 스키마가 깨끗하게 업데이트됩니다.

2

rake db:migrate은 데이터베이스를 현재 상태 (마이그레이션 별도)로 폴링하고 이에 따라 schema.rb를 업데이트한다는 점에 유의해야합니다. 예를 들어, SQL 명령 줄에 테이블을 추가 한 다음 rake db:migrate을 실행하면 schema.rb에 마이그레이션 여부와 관계없이 새 테이블이 반영됩니다.

0

환경 변수를 정의하는 것을 잊었을 수 있습니다.

  1. 열기 Gemfile 당신이 당신의 환경에 sqlite 보석을 사용하지 않는 것이 확인
  2. 입력 rake db:drop 다음 rake db:drop 명령 출력으로 당신이 빈 문자열을받을 경우, 아마 당신이 설정 환경 변수에 잊었
  3. 를 체크 아웃 config/database.yml 파일을 찾고 사용할 수있는 장소를 찾으십시오. 다음과 같은 것을 찾아야합니다. database: <%= ENV["<DB_NAME"] %>
  4. 변수가 이전에 설정되었는지 확인하십시오. 미안 - 당신이 dotenv 또는 figaro 보석을 사용하는 경우, 아마 당신은 해당 파일을 만들거나