読者です 読者をやめる 読者になる 読者になる

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' #←文字列じゃないとアカン

えー、これバグじゃねーのという感じがある。