(docker)(Laravel)マイグレーション時、could not find driver のエラー

docker-laravel-migration-could-not-find-driver

 

dockerで構築したlaravel環境で、マイグレーションしたら下記のようなエラーが出た。

could not find driver

 

ドライバーが見つからないと怒られている。

 

原因:MySQLのドライバが存在しないから




could not find driverというエラーは、PDO(PHP Data Object)がDBを操作するために必要な、
ドライバと言うものがないために出ているエラー。

使用中のphpイメージでは、デフォルトでsqlite用ドライバしかないらしい。

 

下記コマンドで現在のPHP拡張モジュール一覧を調べることができる(phpコンテナ内で打つこと)

# PHP拡張モジュール一覧を表示する

php -m

 

phpinfo()でも確認できる。

phpinfo-pdo

 

 

解決策:MySQLのドライバ(pdo_mysql)をインストールする

could not find driverというエラーを解決するには、
下記手順で、mysqlのドライバ(pdo_mysql)をインストールする。

 

①Dockerfileを修正する

Dockerfileを下記のように修正する。

FROM php:7.3-apache

# pdo_mysql(mysqlのドライバ)をインストールする
RUN docker-php-ext-install pdo_mysql

 

②Dockerfileを使ってphpイメージをビルドする

下記コマンドをDockerfileが存在する階層で実行し、phpイメージをビルドする。

docker build -t php:7.3-apache .

 

※「docker build -t イメージ名:タグ名 . する時は、
タグ名をdocker-composeで書いてあるタグ名に指定するよう気をつけよう

 

イメージがビルドできたら、コンテナを再起動。
んでもう一回コンテナ内でphp -mを打つと、

 

pdo_mysqlドライバがインストールされている。

と言うことで、この状況で改めてphp artisan migrateすると、マイグレーションが成功するはず。

 

 

(docker)(Laravel)マイグレーション時、php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not knownのエラー

 

https://www.docker.com/

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。