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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1599閲覧

Laravel+MySQLの環境構築中のマイグレーション実行時のエラーを解決したい

3aki

総合スコア14

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

1クリップ

投稿2022/06/14 06:37

前提

Windows 10 Pro 64bit環境上にLaravelをインストールし、
Docker上にMySQLの環境を作りこれを接続しようとしています。
php artisan migrateを実行したところ下記1つ目のエラーが発生しました。
.envDB_HOST=127.0.0.1DB_HOST=mysqlに書き換えると下記2つ目のエラーが発生しました。

実現したいこと

php artisan migrateをエラーなく動作させ環境構築を完了させる。

発生している問題・エラーメッセージ

1つ目のエラー

1C:\Users\admin\AppData\Original\Git\PLF\pl-f>php artisan migrate 2 3 Illuminate\Database\QueryException 4 5 SQLSTATE[HY000] [2002] 対象のコンピューターによって拒否されたため、接続できませんでした。 (SQL: select * from information_schema.tables where table_schema = plf and table_name = migrations and table_type = 'BASE TABLE') 6 7 at C:\Users\admin\AppData\Original\Git\PLF\pl-f\vendor\laravel\framework\src\Illuminate\Database\Connection.php:742 8 738▕ // If an exception occurs when attempting to run a query, we'll format the error 9 739▕ // message to include the bindings with SQL, which will make this exception a 10 740▕ // lot more helpful to the developer instead of just the database's errors. 11 741▕ catch (Exception $e) { 12 ➜ 742▕ throw new QueryException( 13 743▕ $query, $this->prepareBindings($bindings), $e 14 744▕ ); 15 745▕ } 16 746▕ } 17 18 1 C:\Users\admin\AppData\Original\Git\PLF\pl-f\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70 19 PDOException::("SQLSTATE[HY000] [2002] 対象のコンピューターによって拒否されたため、接続できませんでした。") 20 21 2 C:\Users\admin\AppData\Original\Git\PLF\pl-f\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70 22 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=plf", "root", "password", []) 23

2つ目のエラー

1C:\Users\admin\AppData\Original\Git\PLF\pl-f>php artisan migrate 2 3 Illuminate\Database\QueryException 4 5 SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: ���̂悤�ȃz�X�g�͕s���ł��B (SQL: select * from information_schema.tables where table_schema = plf and table_name = migrations and table_type = 'BASE TABLE') 6 7 at C:\Users\admin\AppData\Original\Git\PLF\pl-f\vendor\laravel\framework\src\Illuminate\Database\Connection.php:742 8 738▕ // If an exception occurs when attempting to run a query, we'll format the error 9 739▕ // message to include the bindings with SQL, which will make this exception a 10 740▕ // lot more helpful to the developer instead of just the database's errors. 11 741▕ catch (Exception $e) { 12 ➜ 742▕ throw new QueryException( 13 743▕ $query, $this->prepareBindings($bindings), $e 14 744▕ ); 15 745▕ } 16 746▕ } 17 18 1 C:\Users\admin\AppData\Original\Git\PLF\pl-f\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70 19 PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo for mysql failed: ���̂悤�ȃz�X�g�͕s���ł��B ") 20 21 2 C:\Users\admin\AppData\Original\Git\PLF\pl-f\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70 22 PDO::__construct("mysql:host=mysql;port=33306;dbname=plf", "root", "password", []) 23

試したこと

1つ目のエラーが発生したあと、.env

_.env

1DB_CONNECTION=mysql 2DB_HOST=127.0.0.1 3DB_PORT=3306 4DB_DATABASE=plf 5DB_USERNAME=root 6DB_PASSWORD=password

の値をチェックしました。また、念のためにとdatabase.php

database.php

1 'mysql' => [ 2 'driver' => 'mysql', 3 'url' => env('DATABASE_URL'), 4 'host' => env('DB_HOST', '127.0.0.1'), 5 'port' => env('DB_PORT', '3306'), 6 'database' => env('DB_DATABASE', 'plf'), 7 'username' => env('DB_USERNAME', 'root'), 8 'password' => env('DB_PASSWORD', 'password'),

の値も書き換えました。
php artisan cache:clearを実行し再度php artisan migrateを試してみましたが1つ目のエラーと同じエラーになりました。

次に、.envDB_HOSTをMySQLのコンテナ名のmysqlに変更し、php artisan cache:clearを実行し再度php artisan migrateを試してみましたが2つ目のエラーと同じエラーになりました。

docker volume pruneを試してみましたが、削除されたファイルは0Bで、php artisan cache:clearを実行し再度php artisan migrateを試してみましたが2つ目のエラーと同じエラーになりました。

補足情報(FW/ツールのバージョンなど)

  • Windows 10 Pro 64bit 19043.1706
  • PHP VS16 x64 Thread Safe (2022-May-11 09:29:42)
  • Composer v2.3.7
  • Laravel Framework 9.16.0
  • Docker version 4.3.2
  • MySQL 8.0
wai_👍を押しています

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

mysqlコンテナのport設定はどうなっているでしょうか。2つめの試行でport=33306;となっているので、
-p 33306:3306 という設定になっているのではないでしょうか。
手元で状況を勘で再現してみました。

C:\Users\wai>docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d -p 33306:3306 mysql 1a7d2867c7b1f61b9364ac6e5c025b3f3629275cc18d74e2e7d0471700c609d2 C:\Users\wai>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a7d2867c7b1 mysql "docker-entrypoint.s…" 23 seconds ago Up 22 seconds 33060/tcp, 0.0.0.0:33306->3306/tcp mysql

HeidiSQLからこのコンテナにhost=127.0.0.1 port=33306 でアクセスできました。

host=127.0.0.1 port=33306でアクセスするとイケるのではないでしょうか。

投稿2022/06/14 16:32

wai_

総合スコア66

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

3aki

2022/06/15 07:30

回答、ありがとうございます。 その通りのport設定でした。試してみます。
3aki

2022/06/15 07:45

通りました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問