質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.55%

AWSのRailsアプリでテストデータが作成できない(Mysql2::Error::ConnectionError: Can't connect to local MySQL server ...)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 530

begenner

score 62

AWS を利用して 作成したRailsアプリを動作させるための設定をしていますが、
データベースにテストデータの投入を実行すると下記のエラーが発生しデータが作成されません。

わかる方がいらっしゃればどうぞよろしくお願いいたします(m_ _m)

動作環境

OS:mac
Ruby:2.4.5
Ruby on Rails: 4.2.11

現状

期待する動作

gem seed-fu によるテストデータ作成が完了してほしい

エラー内容

$ bundle exec rake db:seed;
# == Seed from /var/www/rails/my_app_name/db/fixtures/02_user.rb
# rake aborted!
# Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `initialize'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `new'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `mysql2_connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:438:in `new_connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:448:in `checkout_new_connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `acquire_connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:349:in `block in checkout'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:348:in `checkout'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:263:in `block in connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:262:in `connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:571:in `retrieve_connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_handling.rb:113:in `retrieve_connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/connection_handling.rb:87:in `connection'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.11.1/lib/active_record/transactions.rb:220:in `transaction'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/seed-fu-2.3.9/lib/seed-fu/runner.rb:35:in `run_file'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/seed-fu-2.3.9/lib/seed-fu/runner.rb:26:in `block in run'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/seed-fu-2.3.9/lib/seed-fu/runner.rb:25:in `each'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/seed-fu-2.3.9/lib/seed-fu/runner.rb:25:in `run'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/seed-fu-2.3.9/lib/seed-fu.rb:29:in `seed'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/seed-fu-2.3.9/lib/tasks/seed_fu.rake:36:in `block (2 levels) in <top (required)>'
# /var/www/rails/my_app_name/vendor/bundle/ruby/2.4.0/gems/rake-12.3.3/exe/rake:27:in `<top (required)>'
# /home/ec2user/.rbenv/versions/2.4.5/bin/bundle:23:in `load'
# /home/ec2user/.rbenv/versions/2.4.5/bin/bundle:23:in `<main>'
# Tasks: TOP => db:seed_fu
# (See full trace by running task with --trace)

(データベース、テーブル作成後のEC2からmysql(RDS)へ mysqlコマンドでの接続の実行結果)

sudo yum install mysql;
# rails、自作アプリのcloneなどは割愛
bundle exec rake db:create RAILS_ENV=production;
bundle exec rake db:migrate RAILS_ENV=production;





mysql -h RDSエンドポイント -P 3306 -u ユーザー名 -p
# Enter password:
# Welcome to the MariaDB monitor.  Commands end with ; or \g.
# Your MySQL connection id is 61
# Server version: 5.7.22 Source distribution
# 
# Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
# 
# Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 
# MySQL [(none)]>show databases;
# +---------------------+
# | Database            |
# +---------------------+
# | information_schema  |
# | innodb              |
# | mysql               |
# | performance_schema  |
# | my_app_name_production |
# | sys                 |
# +---------------------+
# 6 rows in set (0.00 sec)
# 
# MySQL [(none)]> use my_app_name_production;
# Reading table information for completion of table and column names
# You can turn off this feature to get a quicker startup with -A
# 
# Database changed
# MySQL [my_app_name_production]> show tables
#     -> ;
# +-------------------------------+
# | Tables_in_my_app_name_production |
# +-------------------------------+
# | addresses                     |
# | :                |
# | :                |
# | :                |
# +-------------------------------+
# 22 rows in set (0.00 sec)
MySQL [(none)]> exit
# Bye

試したこと

参考サイト:

EC2接続後のterminalで

  • mysql_config --socketコマンドによるsocketの指定を確認、config/database.ymlのsocketを変更
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password:
  socket: /var/lib/mysql/mysql.sock # mysql_config --socket の実行結果

development:
  <<: *default
  database: my_app_name_development

test:
  <<: *default
  database: my_app_name_test


production:
  <<: *default
  database: my_app_name_production
  host: RDSのエンドポイント
  username: root
  password: パスワード
mysql --help | grep my.cnfps ax | grep mysqlを実行、またその実行結果

参考:AWSでMysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)のエラー - たれみみマンデー

[ec2user@ip-xxx-xxx-xxx-xxx ~]$ ps ax | grep mysql
# 25114 pts/1    S+     0:00 mysql -h RDSのエンドポイント -P 3306 -u root -p
# 25654 pts/4    S+     0:00 grep --color=auto mysql

[ec2user@ip-xxx-xxx-xxx-xxx ~]$ mysql --help | grep my.cnf
# /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
#                       order of preference, my.cnf, $MYSQL_TCP_PORT,

[ec2user@ip-xxx-xxx-xxx-xxx ~]$ ps ax | grep mysql
# 25114 pts/1    S+     0:00 mysql -h RDSのエンドポイント -P 3306 -u root -p
# 25654 pts/4    S+     0:00 grep --color=auto mysql

[ec2user@ip-xxx-xxx-xxx-xxx ~]$ cat /etc/mysql/my.cnf
# cat: /etc/mysql/my.cnf: No such file or directory

[ec2user@ip-xxx-xxx-xxx-xxx ~]$ cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

[ec2user@ip-xxx-xxx-xxx-xxx ~]$ cat ~/.my.cnf
# cat: /home/ec2user/.my.cnf: No such file or directory
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

下記のコマンド(rakeコマンドにproduction環境の指定を追加)を実行することで期待通りの動作がされました

[ec2user@ip-xxx-xxx-xxx-xxx my_app_name]$bundle exec rake db:seed RAILS_ENV=production

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.55%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる
  • トップ
  • MySQLに関する質問
  • AWSのRailsアプリでテストデータが作成できない(Mysql2::Error::ConnectionError: Can't connect to local MySQL server ...)