Rails 4.0.1/MySQL環境でstructure.sqlを使ってrake db:setupしようとしてコケた
Rails 4.0.1/MySQLで、structure.sqlを使ってrake db:setupしようとすると、以下のようなエラー出てこけた。
rake aborted! no implicit conversion of Fixnum into String /home/vagrant/share/nsts/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.1/lib/active_record/tasks/mysql_database_tasks.rb:72:in `system' /home/vagrant/share/nsts/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.1/lib/active_record/tasks/mysql_database_tasks.rb:72:in `structure_load' /home/vagrant/share/nsts/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.1/lib/active_record/tasks/database_tasks.rb:149:in `structure_load' /home/vagrant/share/nsts/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.1/lib/active_record/railties/databases.rake:302:in `block (3 levels) in' /home/vagrant/share/nsts/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.1/lib/active_record/railties/databases.rake:306:in `block (3 levels) in '
ActiveRecordのデバッグをしてみたら、database.ymlの書き方が悪い(接続先ポートを数値として書いたらアカンらしい)ことに気付いた。
誤っている設定例
development: adapter: mysql2 encoding: utf8 database: **** pool: 5 timeout: 5000 username: **** password: **** host: localhost port: 3306 #←これがダメ
正しい設定例
development: adapter: mysql2 encoding: utf8 database: **** pool: 5 timeout: 5000 username: **** password: **** host: localhost port: '3306' #←文字列じゃないとアカン
えー、これバグじゃねーのという感じがある。