Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【質問】php artisan migrateしたらエラーが起きた

解決したいこと

久しぶりに成果物をいじって改善しようと思い、 php artisan migrate を実行したところ、以下のエラーが発生しました。

 Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:712
    708▕         // If an exception occurs when attempting to run a query, we'll format the error
    709▕         // message to include the bindings with SQL, which will make this exception a
    710▕         // lot more helpful to the developer instead of just the database's errors.
    711▕         catch (Exception $e) {
  ➜ 712▕             throw new QueryException(
    713▕                 $query, $this->prepareBindings($bindings), $e
    714▕             );
    715▕         }
    716▕     }

      +33 vendor frames 
  34  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

エラー分をGoogle先生に投げて調べてみてもうまくいきませんでした。
どなたか解決法を教えていただけないでしょうか。

開発環境

・PHP(laravel) Framework 8.82.0
・Docker version 20.10.12

該当するソースコード

以下.envファイルのデータベース部分docker-compose.ymlになります。

terminal
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password

docker-compose.yml
mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sail-mysql:/var/lib/mysql'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s

自分で試したこと

.envファイルのDB_HOSTをlocalhostや127.0.0.1にしたりする→変わらずエラー
・dockerのvolumesの中で使っていないものを削除する→変わらずエラー

初歩的な内容で大変申し訳ないのですが、解決法をご教示お願いいたします🙇‍♂️

1

2Answer

@Hiroto0706

エラーのログがこちらになりますが、

php_network_getaddresses: getaddrinfo for mysql failed: nodename nor servname provided, or not known 

コンテナ内でphp artisan migrateしていますでしょうか?
ローカルで実行すると、失敗するかと思います。

また、docker-compose.ymlのdbだけでなく、webに関して、portなども.envと一緒に確認したほうがよいかと思います。

「laravel 上記のエラーログ」で検索にかけると、かなりの記事がありましたので、ひとつひとつ確認してもよいかもしれません。

2Like

Comments

  1. ご丁寧にありがとうございます!🙇‍♂️
    一度@holdout0521様の送っていただいた記事を参考にチャレンジしてみます!

Your answer might help someone💌