0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnitTestでマイグレーションした時にエラーが出て困った

Posted at

はじめに

こんにちは、エンジニアのkeitaMaxです。

備忘録としてエラーが出て困ったことを書きます。

version

  • laravel12

困った内容


      - name: dokcer-compose up
        run: |
          docker compose up -d
      - name: composer install
        run: |
          docker compose exec app composer install

      - name: Laravel Settings
        run: |
          docker compose exec -T app cp .env.example .env
          docker compose exec -T app php artisan key:generate
          docker compose exec -T app php artisan migrate

GitHubActionsで↑を実行したら以下のようなエラーが出ました。

Run docker compose exec -T app cp .env.example .env

   INFO  Application key set successfully.  


   Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select exists (select 1 from information_schema.tables where table_schema = 'database' and table_name = 'migrations' and table_type in ('BASE TABLE', 'SYSTEM VERSIONED')) as `exists`)

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:825
    821▕                     $this->getName(), $query, $this->prepareBindings($bindings), $e
    822▕                 );
    823▕             }
    824▕ 
  ➜ 825▕             throw new QueryException(
    826▕                 $this->getName(), $query, $this->prepareBindings($bindings), $e
    827▕             );
    828▕         }
    829▕     }

      +41 vendor frames 

原因

原因はMySQLがまだ応答していないのにマイグレーションファイルを流していることでした。

解決策

以下のようにMySQLを待つという処理を入れたら解決しました。


      - name: dokcer-compose up
        run: |
          docker compose up -d
      - name: composer install
        run: |
          docker compose exec app composer install
      - name: wait-for-db
        run: docker compose exec db mysqladmin ping --silent --wait=30

      - name: Laravel Settings
        run: |
          docker compose exec -T app cp .env.example .env
          docker compose exec -T app php artisan key:generate
          docker compose exec -T app php artisan migrate

おわりに

この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。

最後まで読んでいただきありがとうございました!

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?