Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Add quotes to Numeric Passwords to force string(Postgres)

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...
commit 6e72099a382c9731c7b40aa1b10237318e31ac92 1 parent 0939a81
Gaurish Sharma gaurish authored
2  railties/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml
View
@@ -20,6 +20,8 @@ development:
database: <%= app_name %>_development
pool: 5
username: <%= app_name %>
+ # Remember to use quotes incase of numeric passwords to force string type to yaml parser
+ # for example, use "123456" instead of 123456
password:
# Connect on a TCP socket. Omitted by default since the client uses a
Please sign in to comment.
Something went wrong with that request. Please try again.