Rails x Docker環境で以下のエラーが発生しており、開発用データベースは作れるがテスト用データベースが作成されないという状況になってます。
環境
Ruby 2.4.0
Ruby on Rails 5.2.2
MySQL 5.7.25
Docker for Mac
エラーコード
$ docker-compose run --rm app rails db:create Starting estreak_mysql_1 ... done Database 'eStreak_development' already exists Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) Couldn't create 'eStreak_test' database. Please check your configuration. rails aborted! Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect' /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `initialize' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `new' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `mysql2_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:811:in `new_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:855:in `checkout_new_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:834:in `try_to_checkout_new_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:795:in `acquire_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:523:in `checkout' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1014:in `retrieve_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:118:in `retrieve_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:90:in `connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/mysql_database_tasks.rb:6:in `connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/mysql_database_tasks.rb:14:in `create' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:119:in `create' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:139:in `block in create_current' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:316:in `block in each_current_configuration' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:313:in `each' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:313:in `each_current_configuration' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:138:in `create_current' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/railties/databases.rake:29:in `block (2 levels) in <main>' /usr/local/bundle/gems/railties-5.2.3/lib/rails/commands/rake/rake_command.rb:23:in `block in perform' /usr/local/bundle/gems/railties-5.2.3/lib/rails/commands/rake/rake_command.rb:20:in `perform' /usr/local/bundle/gems/railties-5.2.3/lib/rails/command.rb:48:in `invoke' /usr/local/bundle/gems/railties-5.2.3/lib/rails/commands.rb:18:in `<main>' /usr/local/bundle/gems/bootsnap-1.4.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require' /usr/local/bundle/gems/bootsnap-1.4.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi' /usr/local/bundle/gems/bootsnap-1.4.3/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register' /usr/local/bundle/gems/bootsnap-1.4.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi' /usr/local/bundle/gems/bootsnap-1.4.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require' /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require' /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require' /usr/src/eStreak/bin/rails:9:in `<top (required)>' /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load' /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call' /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call' /usr/local/bundle/gems/spring-2.0.2/lib/spring/client.rb:30:in `run' /usr/local/bundle/gems/spring-2.0.2/bin/spring:49:in `<top (required)>' /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load' /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>' /usr/src/eStreak/bin/spring:15:in `require' /usr/src/eStreak/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)
エラー上ではDatabase 'eStreak_development' already existsとなっておりますがこちらは二度目以降のdb:createです、初回はcreatedと表示され作成されました。
試してみたこと
- config/database.ymlの確認
developmen環境、test環境とも同じ設定を行っており、テストデータベースのみ作成される原因ではないと判断しました。
database.yml
1default: &default 2 adapter: mysql2 3 encoding: utf8 4 port: 3306 5 pool: 5 6 timeout: 5000 7 url: <% ENV['DATABASE_URL']%> 8 username: root 9 password: 10 socket: /var/lib/mysql/mysql.sock 11 12development: 13 <<: *default 14 database: eStreak_development 15 16# Warning: The database defined as "test" will be erased and 17# re-generated from your development database when you run "rake". 18# Do not set this db to the same as development or production. 19test: 20 <<: *default 21 database: eStreak_test 22
- ホストOS型開発環境(centos6)で実行
問題なく作成されました。
- 別のrails newで別のrailsアプリを作り実行。
本件と同じでテストデータベースのみ作成されませんでした。
- Dockerイメージ再ビルド
症状変わらず。
どなたかアドバイスをよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/23 10:59
2019/04/23 11:02