EC2からPlanetScaleへ接続したときのエラー解消

EC2上でLaravelを使用してアプリケーションを作成したさい、DBにPlaceScaleを使用し、Laravelから接続を行いました。そのときにSQLSTATE[HY000] [2002] No such file or directoryというエラーが出たため、その解消手順を記載しました。

環境

EC2(Amazon Linux)
Laravel 8.83.8

DB接続

LaravelからPlanetScaleのDBへ接続するには、PlanetScaleで作成したDBの画面から、ConnectConnect withタブからLaravelを選択します。
以下のように.envファイルに記載する内容が表示されるので、これをもとに.envファイルを作成もしくは更新することでDB接続の準備は完了します。


DB_CONNECTION=mysql
DB_HOST=ap-aaaaaa.connect.bbbb.cloud
DB_PORT=3306
DB_DATABASE=sample_db
DB_USERNAME=xxxxxxxxxxx
DB_PASSWORD=************
MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem

エラー内容

.envファイルを編集後、php artisan migrateコマンドを使用してテーブル作成を行おうとしましたが、以下のようにエラーが出力されました。


SQLSTATE[HY000] [2002] No such file or directory (SQL: select exists(select * from `informations` where `number` = 000001) as `exists`)

解消手順

EC2でAmazon Linuxを使用している場合、表示されている内容では接続ができません。以下の箇所を変更する必要があります。


MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem

DB接続の際、PlanetScaleの画面からConnectボタンで表示されたモーダルの下部に以下のように記載があります。

View the certificate authority root paths for the MYSQL_ATTR_SSL_CA details.

このページへ遷移すると、以下のように記述があります。

RedHat / Fedora / CentOS / Mageia / Vercel / Netlify This path also applies to RedHat or Fedora derivatives like Amazon Linux and Oracle Linux. This is the path to use for applications deployed on Vercel and Netlify.

/etc/pki/tls/certs/ca-bundle.crt

これをもとに、さきほどの.envファイルに記載する内容を変更します。


DB_CONNECTION=mysql
DB_HOST=ap-aaaaaa.connect.bbbb.cloud
DB_PORT=3306
DB_DATABASE=sample_db
DB_USERNAME=xxxxxxxxxxx
DB_PASSWORD=************
MYSQL_ATTR_SSL_CA=/etc/pki/tls/certs/ca-bundle.crt

以上の内容で.envファイルを作成することでDB接続が行えるようになりました。

自分と同じエラーで進まなくなった方の助けになれば幸いです。

aws