MaReee69
@MaReee69

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

これはどのようなエラーなのでしょうか。。。

Q&A

Closed

解決したいこと

エラーが何も出ず進まない状況です。調べたところ同様なエラーが見当たらずどう行動していいか分からずにいます。表示されている内容をコピーし検索してみたのですがマイグレートに関する内容でした。

発生している問題・エラー

Illuminate\Database\QueryException
http://127.0.0.1:8000/login

または、問題・エラーが起きている画像をここにドラッグアンドドロップ
2024-09-01 (2).png

2024-09-01 (3).png

該当するソースコード

env.php

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:D+yLtZwycoDYcBg/Nx7dPxTrwCMlrbzsTyH9sBTKfRY=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root

database.php

 'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

自分で試したこと

・キャッシュのクリア
(php artisan config:cashe)
・再起動
・env.phpとdatabase.phpの相違がないかの確認

0

3Answer

前提となる環境や、そもそも何をやろうとしているのか、など基本的な情報があるといいですね。

ひとまず、ぱっと見て気になるところは環境変数設定のこの部分です。
DB_HOST=db

この設定値はDockerを使って環境構築した際に見られます。
しかし、エラー情報のファイルパスを見るとどうやらMAMPを使っているようなので、通常はlocalhostのような設定値になると思うのです。
参考にされている情報がご自身の状況と合っているか確認されてはいかがでしょうか。

1Like

@MaReee69さん

PHP&Laravelは詳しくないので、期待はしないでいただきたいですが、
Connection.phpでエラーがでているようなので、データベースの接続情報が間違っている(または読み込めていない)ような気がします。

気になったところが2カ所あったので、ご確認いただければと思います。

  1. env.php
    環境変数用のファイルなので、ファイル名.envになる気がします。
    他の言語(javaやPythonなど)では、基本そうします。
    (参考にされた資料がそうなっていたのか、ちょっと分からないですが)

2.DBへの接続について

・env.phpとdatabase.phpの相違がないかの確認

データベースへの接続が、コマンドまたはGUIツール(phpMyAdminなど)を通して既に成功したので、その値を環境変数として値に設定をした、ということで合っているでしょうか。

0Like

Comments

  1. @MaReee69

    Questioner

    @eno49conan さん
    ご回答ありがとうございます。
    見やすく更にとても分かりやすく記載していただきありがとうございます。

    1はおっしゃる通りでした。私の認識不足で.envをenv.phpと勘違いしていました。
    2に関しまして申し訳ございません。私の理解不足と知識不足で内容が分からないです。
    その値を環境変数として値に設定をした→どういった内容でしょうか。

  2. @MaReee69さん
    .envの以下の部分が、データベース接続に必要な情報だと思います。

    DB_CONNECTION=mysql
    DB_HOST=db
    DB_PORT=3306
    DB_DATABASE=laravel
    DB_USERNAME=root
    DB_PASSWORD=root
    

    DBへ接続できていないことでエラーが発生しているのでは?と最初にコメントしました。

    「DBへ接続できていない」と一言にいっても、原因はいくつか考えられます。今回考えられそうな原因は以下2つだと思いました。

    1. .envに記載した接続情報(usernameやpasswordなど)が間違っている
    2. 1は問題ないが、PHPのコードを通じて.envに記載した接続情報を読み込む部処理が思った通りには機能していない

    まず確認しなければいけないのは、1です。
    私がした2つ目の質問は、DB接続情報が正しい、という確認が完了しているかという質問です。

    DB接続情報が正しいと確認するために、PHPのコードから一旦離れ、
    自分が作成したDB(laravel)に、username(root)とpassword(root)でDBへの接続が成功するか確かめます。

    接続するための手段は大きく2つありますね。どちらでもいいので、DBへの接続が成功することを確認します。

    1. mysqlコマンドを通して
    2. phpMyAdminやA5MK2などのツールを通して
    • 接続成功した場合:dbとusernameとpasswordの組み合わせには問題ないので、それらの値を.envに記載後、コードから接続したときに失敗する理由を調査(2に進む)
    • 接続失敗した場合:dbとusernameとpasswordの組み合わせに問題があるので、正しい値を確認する

    その値を環境変数として値に設定
    これは、接続成功した場合に記載した「それらの値を.envに記載」と同じことをさしています。

  3. @MaReee69

    Questioner

    ご回答ありがとうございます。
    1はすべて正しかったです。
    2に関してなのですがすべてアンインストールし最初からやり直したところうまく動作しました。お騒がせしました。
    頂きました情報とても勉強になりました。
    ありがとうございます。

コードは自分で書いたものではなく、ネットの記事などからコピーしたもののように見えますが、そうであれば出典は何かを書いてください。

「エラーが何も出ず」と書いてますが違うのでは? try 句で出た例外を catch 句で補足して、そこでキャッチした例外から QueryException を作って投げ直しているように見えます。エラーが出ないとはどういうことですか?

0Like

Comments

  1. @MaReee69

    Questioner

    @SurferOnWww さん
    ご回答ありがとうございます。

    こちらはネットに記載されているものではいないため出典はないように思われます。
    私の記載不足で申し訳ございません。

    エラーが出ないというのは私の認識不足で申し訳ないです。いつもであれば上のほうにあるQueryexceptionの下にエラー文のような内容が記載されているのですが今回は記載されておらず悪戦苦闘しております。
    解決方法が知りたいといいますか何が起こっているのか知りたいという内容です。

  2. 質問のコードはあなたが書いたものだと言ってますか? コードが自力で書けるのであれば、問題の部分が何をしているかも分かっていて、何が原因なのかも自力で調べることができるはずで、自己解決できると思います。でも何も分からないのですよね。話が通じてますでしょうか?

  3. @MaReee69

    Questioner

    失礼いたしました!私が書いたコードではないです!
    全てアンインストールし、最初からやり直したところなぜか無事に解決しました。
    ありがとうございます。

  4. よそから持ってきたコードはどこから持ってきたのか書くようにしてください。次回から必ず。

  5. @MaReee69

    Questioner

    かしこまりました!

Your answer might help someone💌