2012-12-28 57 views
1

好吧,我有這個工作,我不知道我可以改變,使rake db:create現在不工作。我跑rake db:drop放棄我的分貝,所以我可以從頭開始,現在rake db:create有問題。Rails rake中止!不能將哈希轉換爲字符串

下面是我的堆棧跟蹤。我不知道如何去解決這個問題。

$ rake db:create --trace 
** Invoke db:create (first_time) 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
** Execute db:create 
rake aborted! 
can't convert Hash into String 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/mysql2_adapter.rb:17:in `new' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/mysql2_adapter.rb:17:in `mysql2_connection' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:304:in `new_connection' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:323:in `checkout_new_connection' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block (2 levels) in checkout' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:261:in `loop' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:261:in `block in checkout' 
/Users/TomCaflisch/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:260:in `checkout' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:162:in `connection' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:409:in `retrieve_connection' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:115:in `retrieve_connection' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:89:in `connection' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/railties/databases.rake:86:in `rescue in create_database' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/railties/databases.rake:54:in `create_database' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/task.rb:227:in `call' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/task.rb:227:in `block in execute' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/task.rb:222:in `each' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/task.rb:222:in `execute' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/task.rb:166:in `block in invoke_with_call_chain' 
/Users/TomCaflisch/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/task.rb:159:in `invoke_with_call_chain' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/task.rb:152:in `invoke' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:141:in `invoke_task' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:99:in `block (2 levels) in top_level' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:99:in `each' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:99:in `block in top_level' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:108:in `run_with_threads' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:93:in `top_level' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:71:in `block in run' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:158:in `standard_exception_handling' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/application.rb:68:in `run' 
/Users/TomCaflisch/.rvm/gems/[email protected]/gems/rake-10.0.2/bin/rake:37:in `<top (required)>' 
/Users/TomCaflisch/.rvm/gems/[email protected]/bin/rake:19:in `load' 
/Users/TomCaflisch/.rvm/gems/[email protected]/bin/rake:19:in `<main>' 
/Users/TomCaflisch/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `eval' 
/Users/TomCaflisch/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `<main>' 
Tasks: TOP => db:create 

的database.yml

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
development: 
    adapter: mysql2 
    encoding: utf8 
    database: FamNFo_development 

    # local 
    username: root 
    password: 

    # server 
    # username: famnfo_dev 
    # password: Panther89!1 

    # local 
    socket: /tmp/mysql.sock 

    # server 
    # socket: /var/lib/mysql/mysql.sock 

# 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: 
    adapter: mysql2 
    encoding: utf8 
    database: FamNFo_test 
    # local 
    # username: root 
    # password: 

    # server 
    username: root 
    password: 

    # local 
    socket: /tmp/mysql.sock 

    # server 
    #socket: /var/lib/mysql/mysql.sock 

production: 
    adapter: mysql2 
    encoding: utf8 
    database: FamNFo_production 
    # local 
    # username: root 
    # password: 

    # server 
    username: myusername 
    password: mypassword 

    # local 
    # socket: /tmp/mysql.sock 

    # server 
    socket: /var/lib/mysql/mysql.sock 
+0

你的config/database.yml是什麼樣的? –

+0

哇,奇怪的是,在我的database.yml測試部分的'socket'之前的空間丟掉了它。我擺脫了這個空間,它工作得很好。 – Catfish

+0

這是因爲YAML將密碼看作是一個子密鑰,所以密碼是一個散列而不是一個字符串。瞧! –

回答

3

當它被解釋爲一個子鍵在YAML文件中的鍵之前有多餘的前導空格,因此,上級密鑰被解釋爲一個哈希,而不是一個字符串。因此,在測試部分的socket之前刪除額外的空間應該可以解決問題。

相關問題