LoginSignup
0
1

More than 1 year has passed since last update.

PDOException(code: 0)でつまづいた話

Posted at

PDOException(code: 0)

PHPでサーバーを立て、接続したところInternalServerが発生。
ログを確認するとPDOException(code: 0)とのエラーログ。

どうやら、MySQLとの接続がうまくいってないらしい。

環境

  • Ubuntu18.04
  • php 8.0.23

試したこと

設定の確認

.envファイルの確認。DB設定が間違っていないか確認。

Install package

sudo apt-get install php-mysql

PHP driverの確認

以下のコードを実行して単純にドライバがないのかの切り分け。

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=sample;charset=utf8mb4','admin','P@ssw0rd');
} catch (PDOException $e) {
    exit($e->getMessage().PHP_EOL);
}
echo('ok'.PHP_EOL);
?>
php sample.php

以下のメッセージが出力。

could not find driver

解消

以下の記事を参考に、php-mysqlnd のインストール。

sudo apt-get install php-mysqlnd

すると、以下のような出力が。

Reading package lists... Done
Building dependency tree
Reading state information... Done
Package php-ctype is a virtual package provided by:
  php8.0-mysql 1:8.0.23-1+ubuntu18.04.1+deb.sury.org+1
  php7.4-mysql 7.4.2-6+ubuntu18.04.1+deb.sury.org+1
  php7.3-mysql 7.3.14-6+ubuntu18.04.1+deb.sury.org+1
  php7.2-mysql 7.2.27-5+ubuntu18.04.1+deb.sury.org+2
  php7.1-mysql 7.1.33-9+ubuntu18.04.1+deb.sury.org+1
  php7.0-mysql 7.0.33-20+ubuntu18.04.1+deb.sury.org+1
  php5.6-mysql 5.6.40-21+ubuntu18.04.1+deb.sury.org+1

You should explicitly select one to install.

どうやら自分のPHPのバージョンに合わせて明示的にインストールする必要があるらしい。

sudo apt-get install php8.0-mysql

これを実行後、先のsample.pyがOKと出力され根本のサーバーエラーも解消した。

sudo apt-get install php-mysql実行時にバージョンに合わせてインストールしてくれてるように見えたが、ダメだった(?)みたい。

参考記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1