source

라라벨:특정 데이터베이스 엔진만 대상으로 마이그레이션 실행

manycodes 2023. 6. 6. 00:09
반응형

라라벨:특정 데이터베이스 엔진만 대상으로 마이그레이션 실행

NAT의 코드베이스는 현재 mariadb 클러스터 백엔드(10.4)에 있으며, 이를 통해 DigitalOcean의 관리 데이터베이스(mySQL 8)도 활용할 수 있어야 합니다.

Laravel의 password_resets 마이그레이션에는 DO Managed DB에서만 문제가 되는 PK가 포함되어 있지 않으며 문제가 있는 마이그레이션에 다음을 추가하여 일시적으로 무시하도록 설정할 수 있습니다.

DB::statement("SET SQL_REQUIRE_PRIMARY_KEY = OFF;");

안타깝게도 mariaDB는 이 문을 이해하지 못하기 때문에 "UNKNOWN system variable"이라는 오류를 발생시킵니다.

특정 데이터베이스 엔진 버전에서 문을 대상으로 지정하거나 오류가 발생할 경우 문을 무시하도록 허용하려면 어떻게 해야 합니까?

다음 행을 mysql 연결에 추가하여 수정했습니다.config/database.php

'mysql8' => env('DB_MYSQL8', false),

그런 다음 체크를 추가합니다.create_password_resets_table~하듯이

if(config('database.connections.mysql.mysql8')) {
    DB::statement("SET SQL_REQUIRE_PRIMARY_KEY = OFF;");
}

마지막으로 데이터베이스가 DO Managed Databases에서 실행 중인 경우 다음을 .env에 추가합니다.

DB_MYSQL8=true

언급URL : https://stackoverflow.com/questions/66987914/laravel-only-run-migration-targeting-a-specific-database-engine

반응형