ankane / distribute_reads

Scale database reads to replicas in Rails

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rails db:create does not work in basic scenario

hubertjakubiak opened this issue · comments

no implicit conversion of nil into String
Couldn't create '' database. Please check your configuration.
rails aborted!
TypeError: no implicit conversion of nil into String
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/postgresql/utils.rb:26:in `quote_ident'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/postgresql/utils.rb:26:in `quoted'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/postgresql/quoting.rb:33:in `quote_table_name'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/postgresql/schema_statements.rb:46:in `create_database'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/connection_wrapper.rb:99:in `public_send'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/connection_wrapper.rb:99:in `method_missing'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/proxy.rb:105:in `public_send'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/proxy.rb:105:in `block in method_missing'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/proxy.rb:152:in `block in any_connection'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/pool.rb:100:in `block in provide'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/active_record/connection_adapters/makara_abstract_adapter.rb:38:in `handle'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/pool.rb:99:in `provide'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/proxy.rb:151:in `any_connection'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/makara-0.4.1/lib/makara/proxy.rb:103:in `method_missing'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/postgresql_database_tasks.rb:21:in `create'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:126:in `create'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:185:in `block in create_current'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:479:in `block (2 levels) in each_current_configuration'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:476:in `each'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:476:in `block in each_current_configuration'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:475:in `each'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:475:in `each_current_configuration'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:184:in `create_current'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.3.4/lib/active_record/railties/databases.rake:39:in `block (2 levels) in <top (required)>'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/railties-6.0.3.4/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/railties-6.0.3.4/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/railties-6.0.3.4/lib/rails/command.rb:48:in `invoke'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/railties-6.0.3.4/lib/rails/commands.rb:18:in `<top (required)>'
/Users/hubertjakubiak/Projects/project-name/bin/rails:9:in `require'
/Users/hubertjakubiak/Projects/project-name/bin/rails:9:in `<top (required)>'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/spring-2.1.1/lib/spring/client/rails.rb:28:in `load'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/spring-2.1.1/lib/spring/client/rails.rb:28:in `call'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/spring-2.1.1/lib/spring/client/command.rb:7:in `call'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/spring-2.1.1/lib/spring/client.rb:30:in `run'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/spring-2.1.1/bin/spring:49:in `<top (required)>'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/spring-2.1.1/lib/spring/binstub.rb:11:in `load'
/Users/hubertjakubiak/.rvm/gems/ruby-2.6.5/gems/spring-2.1.1/lib/spring/binstub.rb:11:in `<top (required)>'
/Users/hubertjakubiak/Projects/project-name/bin/spring:15:in `require'
/Users/hubertjakubiak/Projects/project-name/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)

I get above error when I try firstly try to create the database with rails db:create command. My database.yml looks like:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>

development:
  <<: *default
  url: postgresql-makara:///
  makara:
    sticky: true
    connections:
      - role: master
        name: primary
        url: 'postgres://postgres:password@localhost/project_name'
      - name: replica
        url: 'postgres://postgres:password@localhost/project_name'

What's strange it works fine if I firstly create the database without the gem and then run commands like rails db:migrate or rails db:schema:load.

Hey @hubertjakubiak, it looks like changing the Makara config a bit will fix it.

development:
  adapter: postgresql_makara
  database: dbname
  makara:
    sticky: true
    connections:
      - role: master
        name: primary
        host: localhost
      - name: replica
        host: localhost

Or you can use createdb dbname from Postgres.

Cleaning up issues