Skip to content
Browse files

Add quotes to Numeric Passwords to force string(MySql)

If you have numeric password for your database, like below:
```yaml
development:
  adapter: mysql2
  encoding: utf8
  database: myblog_development
  pool: 5
  username: root
  password: 123456
```
you will get the following obscure error with unhelpful stack-trace

```shell
$ c
/home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': can't convert Fixnum into String (TypeError)
        from /home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:444:in `new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:454:in `checkout_new_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:425:in `acquire_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:362:in `block in checkout'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `checkout'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:271:in `block in connection'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:270:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:545:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:79:in `retrieve_connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/connection_handling.rb:53:in `connection'
        from /home/gaurish/code/repo/rails/activerecord/lib/active_record/railtie.rb:153:in `block in <class:Railtie>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `instance_exec'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:30:in `run'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:55:in `block in run_initializers'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:150:in `block in tsort_each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:219:in `each_strongly_connected_component_from'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:182:in `block in each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:180:in `each_strongly_connected_component'
        from /home/gaurish/.rvm/rubies/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/tsort.rb:148:in `tsort_each'
        from /home/gaurish/code/repo/rails/railties/lib/rails/initializable.rb:54:in `run_initializers'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:216:in `initialize!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/railtie/configurable.rb:30:in `method_missing'
        from /tmp/numericpass/config/environment.rb:5:in `<top (required)>'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require'
        from /home/gaurish/code/repo/rails/railties/lib/rails/application.rb:190:in `require_environment!'
        from /home/gaurish/code/repo/rails/railties/lib/rails/commands.rb:70:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'
```
Looking [Can't convert fixnum to string during rake db:create](http://stackoverflow.com/questions/3765834/cant-convert-fixnum-to-string-during-rake-dbcreate), it seems lot of people have faced the same error.

so adding a note informing about numeric passwords seems like a good idea
  • Loading branch information...
1 parent 6e72099 commit e5f8b2be64a74ce05e7c8b873d3e795e7bc68df5 @gaurish gaurish committed
Showing with 2 additions and 0 deletions.
  1. +2 −0 railties/lib/rails/generators/rails/app/templates/config/databases/mysql.yml
View
2 railties/lib/rails/generators/rails/app/templates/config/databases/mysql.yml
@@ -14,6 +14,8 @@ development:
database: <%= app_name %>_development
pool: 5
username: root
+ # Remember to use quotes incase of numeric passwords to force string type to yaml parser
+ # for example, use "123456" instead of 123456
password:
<% if mysql_socket -%>
socket: <%= mysql_socket %>

0 comments on commit e5f8b2b

Please sign in to comment.
Something went wrong with that request. Please try again.