前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP7.4,laravel7.2,dockerで自動的に以下の手順を実行するシステムを作っています。
1: DB の table1からデータをダウンロード
2:1でのデータをもとに再計算
3:2の結果をtable2にUpdate
テストとして、公式ドキュメントの「スケジュール定義」を参考にタスクスケジューラを設定し、実装中に以下のエラーメッセージが発生し、DBに接続できません。
通常通りページアクセス時にDBに接続する動作は全て正常に行われています。
発生している問題・エラーメッセージ
[previous exception] [object] (PDOException(code: 0): PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known at /Users/myname/docker-laravel-handson/backend/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:75) #0 /Users/myname/docker-laravel-handson/backend/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(75): PDO->__construct('mysql:host=db;p...', 'phper', 'secret', Array) #1 /Users/myname/docker-laravel-handson/backend/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(47): Illuminate\Database\Connectors\Connector->createPdoConnection('mysql:host=db;p...', 'phper', 'secret', Array) #2 /Users/myname/docker-laravel-handson/backend/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=db;p...', Array, Array) [stacktrace]
該当のソースコード
PHP
1<?php 2 3namespace App\Console; 4 5use Illuminate\Console\Scheduling\Schedule; 6use Illuminate\Foundation\Console\Kernel as ConsoleKernel; 7use Illuminate\Support\Facades\DB; 8 9class Kernel extends ConsoleKernel 10{ 11 /** 12 * アプリケーションで提供するArtisanコマンド 13 * 14 * @var array 15 */ 16 protected $commands = [ 17 // 18 ]; 19 20 /** 21 * アプリケーションのコマンド実行スケジュール定義 22 * 23 * @param \Illuminate\Console\Scheduling\Schedule $schedule 24 * @return void 25 */ 26 protected function schedule(Schedule $schedule) 27 { 28 $schedule->call(function () { 29 DB::table('recent_users')->delete(); 30 })->daily(); 31 } 32}
試したこと
vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
に入り、
return new PDO($dsn, $username, $password, $options);
の前でこれらの値を出力しました。
値は、全て正常に接続された時と変わりませんでした。
local.INFO: mysql:host=db;port=3306;dbname=laravel_local local.INFO: phper local.INFO: secret local.INFO: array ( 8 => 0, 3 => 2, 11 => 0, 17 => false, 20 => false, )
また、直接クロージャに書くのではなく、コマンドを作成する・コントローラに接続するなども試しましたが、全て同じエラ〜メッセージが出て詰んでしまいました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
compose.ymlのDB設定
db: build: ./infra/mysql volumes: - db-store:/var/lib/mysql ports: - 33060:3306
あなたの回答
tips
プレビュー