LaravelのPHPUnitで「PDOException: SQLSTATE[HY000] [1040] Too many connections」が起きた
概要
Laravelでテスト実行中に以下のエラーが出るようになり、少し悩んだ
※バージョンは「Laravel 5.5.44」
PDOException: SQLSTATE[HY000] [1040] Too many connections
- エラーの発生箇所はPHPUnitで流しているケースの後半
- エラーが起きたテストクラスを単独で実行するとエラーは発生しない
という状況のため、単純にテストケースごとにConnectionを切る方向で考えた。
参考
とりあえず他に悩んでる人がいないかググった。
対応
上記のQiitaの方は PDO::ATTR_PERSISTENT
で対応したみたいだったが、
本番稼働中のサービスもあり、迂闊にConfigを変えるのは良くない気もしたので、
当初の想定通りに、テストケースごとにConnectionを切ることにした。
/* * @return void */ public function tearDown() { \DB::connection()->disconnect(); // 追加 parent::tearDown(); }
終わりに
RefreshDatabaseTrait
をいろいろカスタマイズしており、$this->beginDatabaseTransaction();
が実行されていないことが原因だと思う