2012-03-29 2 views
7

저는 Stack Overflow와 Ruby on Rails에 익숙합니다. 내 문제는 rake db : rake db : migrate 명령을 실행하면 테스트 데이터베이스가 영향을 받지만 개발 데이터베이스는 영향을 미치지 않는다는 것입니다.rake db : 마이그레이션 및 rake db : 개발 데이터베이스가 아닌 테스트 데이터베이스에서 작업 할 것을 모두 만듭니다.

레일 (3.2.2)

내 database.yml을 : 제안에 대한

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: &test 
    adapter: postgresql 
    encoding: unicode 
    database: ticketee_test 
    pool: 5 
    username: ticketee 
    password: my_password_here 

development: 
    adapter: postgresql 
    encoding: unicode 
    database: ticketee_development 
    pool: 5 
    username: ticketee 
    password: my_password_here 

production: 
    adapter: postgresql 
    encoding: unicode 
    database: ticketee_production 
    pool: 5 
    username: ticketee 
    password: my_password_here 

cucumber: 
    <<: *test 

감사합니다,하지만 난 그 이유 아니다 두렵다. 내 RAILS_ENV = 개발. 레일즈 서버를 시작할 때 서버는 개발 데이터베이스를 실행합니다. "rails server -e test"를 실행하면 서버가 테스트 데이터베이스를 사용합니다. 아직 마이그레이션이 테스트 데이터베이스에서 실행되는 이유를 확신 할 수 없습니다 ...

업데이트 : 제안 사항을 기반으로 개발을 제외한 모든 데이터베이스 구성을 주석 처리 했으므로 이제 오류가 발생합니다. postgresql을 실행 중이며 'pg'가 설치되어 있습니다. 첫째, 내 새 database.yml :

development: 
    adapter: postgresql 
    encoding: unicode 
    database: ticketee_development 
    pool: 5 
    username: ticketee 
    password: my_password_here 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
#test: &test 
# adapter: postgresql 
# encoding: unicode 
# database: ticketee_test 
# pool: 5 
# username: ticketee 
# password: my_password_here 

#production: 
# adapter: postgresql 
# encoding: unicode 
# database: ticketee_production 
# pool: 5 
# username: ticketee 
# password: my_password_here 

#cucumber: 
# <<: *test 

내 오류 메시지!

Someguys-MacBook-Air:ticketee someguy$ rake db:migrate 
rake aborted! 
database configuration does not specify adapter 

Tasks: TOP => db:migrate => db:load_config 
(See full trace by running task with --trace) 
Someguys-MacBook-Air:ticketee someguy$ rake db:migrate -t 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
rake aborted! 
database configuration does not specify adapter 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:39:in `resolve_string_connection' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:23:in `spec' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:127:in `establish_connection' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/railtie.rb:76:in `block (2 levels) in <class:Railtie>' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:42:in `each' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/base.rb:718:in `<top (required)>' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/railties/databases.rake:6:in `block (2 levels) in <top (required)>' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/someguy/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain' 
/Users/someguy/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/Users/someguy/.rvm/gems/[email protected]/bin/rake:19:in `load' 
/Users/someguy/.rvm/gems/[email protected]/bin/rake:19:in `<main>' 

위의 database.yml을 사용하여 rake db : create : all RAN CORRECTLY를 작성하고 내 테이블을 생성했습니다. 그러나 위의 스택 추적과 동일한 스택 추적으로 마이그레이션이 여전히 실패합니다.

나는이 내 database.yml을 변경 : 개발 : 어댑터 : sqlite3를 데이터베이스 : DB/development.sqlite3 수영장 : 5 제한 시간 : 5000

test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: sqlite3 
    database: db/production.sqlite3 
    pool: 5 
    timeout: 5000 

UPDATE : 나는 완전히 바뀌 내 데이터베이스 여기에 .yml : 드롭 : 모든 레이크 dB 뒤에 :

development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

test: &test 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: sqlite3 
    database: db/production.sqlite3 
    pool: 5 
    timeout: 5000 

cucumber: 
    <<: *test 

지금이 내가 갈퀴 DB를 실행할 때 발생하는 것입니다 이동한다. rake db : migrate 명령은 마이그레이션을 실행하여 db/test.sqlite3을 작성하고 테이블을 추가합니다. 따라서 테스트 환경에서 마이 그 레이션이 계속 실행 중입니다. rake environment RAILS_ENV = development db : migrate를 실행하면 같은 일이 발생하고 test.sqlite3 파일이 생성됩니다 ...

+0

마이그레이션 RAILS_ENV = 귀하의 env에서 테스트 했습니까? –

+0

좋은 제안, 나는 그것이 두렵다 고 생각합니다. –

+0

개발 이외의 모든 것을 주석 처리하고 어떤 일이 발생하는지 보았습니까? 작동하지 않을 수도 있지만 솔루션으로 이어지는 오류를 줄 수 있습니다. – huntsfromshadow

답변

2

. 이 문제의 원인이 무엇인지는 알 수 없지만 마침내 성공한 솔루션을 발견했습니다. 설정/환경/develop.rb의 구성 블록 내부에서, 나는 추가 :

Rails.env = 'development' 

내가 너무

+1

config/environments/name.rb는 database.yml의 이름과 일치해야합니다. Rails는 컨피규레이션보다 컨벤션이다. – Sairam

0

yml 파일에 host: localhost가 누락되었습니다.

이에 구성을 변경

: 나는 지난 밤에 시작하는 동일한 문제를 겪고

development: 
    adapter: postgresql 
    encoding: unicode 
    host: localhost 
    database: ticketee_development 
    pool: 5 
    username: ticketee 
    password: my_password_here 
+0

동일한 문제가있는 호스트를 지정했습니다. 위의 테스트 데이터베이스에 마이그레이션을 작성할 수는 있지만 어떤 상황에서도 개발에 쓸 수는 없다는 점을 기억하십시오. –

+0

공백 문제가 의심됩니다. vim에서'vi/path/to/database.yml' 형식의': set list' 파일을 열어 모든 보이지 않는 문자들을 봅니다. – Josh

+0

방금 ​​시도했는데 vi 팁을 주셔서 감사하다고 생각되는 곳의 $ 기호를 보았습니다. 도움이 될 것입니다. –

0

당신을 위해 작동 오류를 포크 (fork) 희망! 일부 캐싱 또는 로그 문제 코드에 오류가 없음을 보여줍니다.

우리 팀이 해결합니다.

  • 프로젝트를 삭제

  • 자식

  • 시작 서버에게 database.yml을에게

모든 것이 괜찮 config (설정) 프로젝트

  • 를 복제!

    동일한 프로젝트 오류가 사라졌습니다! 우리는 그것이 env 문제이거나 cach 또는 log라고 생각합니다./lib 디렉토리/active_record/작업/database_tasks.rb 액티브의 '화려한'라인이있다

  • 3

    : 1월 8일까지, 2014처럼 보였다,

    environments << 'test' if environment == 'development' && ENV['RAILS_ENV'].nil? 
    

    :

    environments << 'test' if environment == 'development' 
    
    2

    이 당신의 솔루션이 두 가지를 포함 할 수 있다는 소리가 들립니다. 기존 요소로 인해 환경이 마이그레이션을 혼동시킬 수 있습니다. 사용하여 데이터베이스를 재설정

    rake db:reset 
    

    또는

    rake db:drop db:create 
    

    사용자 환경에 따라, 당신은 마이그레이션을 수행 할 수 있어야합니다.

    rake db:migrate 
    

    PS - 당신은 각 명령의 시작 부분에 bundle exec를 추가 할 수 있습니다.

    행운을 빈다.

    0

    당신은 갈퀴 DB를 사용할 수 있습니다

    을 RAILS_ENV = "개발"을 마이그레이션하거나

    레이크 DB를

    설정 RAILS_ENV = 개발처럼 사용할 수 있습니다 내 유일한 제안은 당신이 어떻게 든

    관련 문제