
Rails アプリが起動しません・・・
データベース関連のエラーがでているのですがどう対処したらいいのか・・・
そんな疑問にお答えします!
うまく接続できないのはプログラミング自体とはまた別のことなので焦ってしまいますよね。
実際データベースへの接続エラーに悩まされる初心者はとても多いです。
過去にデータベース接続エラーでつまづいているたくさんの初心者の方々を助けてきました。
本記事では、
について解説します。
ほとんどの場合どれかに該当しますので、本記事を読めば問題に対処できるはずです!
原因と対処法: データベースの状態と接続設定を確認しよう
データベースに接続できないエラーが出る場合の原因として考えられるのは
- データベースへの接続設定に誤りがある
- データベースが動作していない
という点があげられます。
対処法としては
- データベースへの接続設定(config/database.yml)に誤りが無いか
- データベースは起動しているか
を確認しましょう。
よくあるエラーパターンと対処法
ここからは具体的によく発生するパターンを紹介し、それぞれの対処法について解説していきます。
Access denied for user ‘ユーザ名’@’localhost’

Access denied for user 'ユーザ名'@'localhost'
というエラーメッセージの場合は、config/database.yml に設定した「ユーザ名」と「パスワード」でデータベースにログインできないことが原因です。
原因としては以下のどれかです。
- config/database.yml に指定したユーザ名に誤りがある
- config/database.yml に指定したパスワードに誤りがある
- config/database.yml に指定したユーザがデータベースに登録されていない
対処法としては以下をチェックしてみましょう。
- config/database.yml に記載した username と password は正しいか
- そのユーザでログイン可能であるか

Can’t connect to local xxxxxx server through socket ‘パス’

Can't connect to local MySQL server through socket 'パス'
のようなメッセージが出る場合は、データベースサーバが停止している可能性があります。
そのため、データベースサーバが起動しているかを確認しましょう。
また、「パス」の部分はソケットと呼ばれるファイルが表示されています。

もし、config/database.yml の設定で socket: を指定していて、それが間違えている可能性があります。

この場合の対処法は以下のどちらかです。
- socket: の行を消してみる(なければそれらしいパスが使われるので動く可能性があります)
- データベースサーバの設定を確認してソケットファイルの場所を確認する
Cannot load database configuration: YAML syntax error occurred while parsing …

上記のようなエラーメッセージがターミナルやブラウザに表示される場合は config/database.yml に構文エラーがあります。
上記エラーメッセージで見るべき点は以下の通りです。

YAML syntax error occurred while parsing … config/database.yml
(config/database.yml の解析中に YAML構文エラーが発生しました)
今回の例では以下のようにスペースが足りないところがあったため発生したエラーでした。

このように YAML の構文上おかしなところを探して修正しましょう。
特に、この例のようにインデントが間違えていることがよくあるので注意が必要です。
まとめ
本記事ではRuby on Railsアプリ開発においてDBに接続できない場合の対処法について解説しました。
原因はデータベース接続設定(config/database.yml)に誤りがあるか、データベースサーバがそもそも動いていないかのどちらかであることが多いです。
そのため対処法としては config/database.yml の修正かデータベースサーバを起動すれば治ることがほとんどです。
冷静に対処しましょう。
その他の Rails エラー関連記事はこちら