[Laravel] 마이그레이션이 안 되는 건 환경 변수 오류 때문일 수 있어요!어떤 잘못.엔비랑 뒤돌아봐.

4575 단어 LaravelDocker

고맙습니다.
Laravel에서 개발할 때는 반드시 php artisan migrate 명령을 사용합니다.나도 여러 차례 보살핌을 받은 명령이다.
이번에는 실행 php artisan migrate 시 발생한 오류와 함께 해결 방안을 쓰고 싶습니다.

오류 1: Docker의 경우


오류 정보
  Illuminate\Database\QueryException  : SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = sample and table_name = migrations and table_type = 'BASE TABLE')

  at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:665
    661|         // If an exception occurs when attempting to run a query, we'll format the error
    662|         // message to include the bindings with SQL, which will make this exception a
    663|         // lot more helpful to the developer instead of just the database's errors.
    664|         catch (Exception $e) {
  > 665|             throw new QueryException(
    666|                 $query, $this->prepareBindings($bindings), $e
    667|             );
    668|         }
    669| 

  Exception trace:

  1   PDOException::("SQLSTATE[HY000] [2002] Connection refused")
      /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=sample", "root", "password", [])
      /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  Please use the argument -v to see more details.

   Whoops\Exception\ErrorException  : Module 'zip' already loaded

  at Unknown:0
    1| 

  Exception trace:

  1   {main}()
      /var/www/html/artisan:0

솔루션: DB_HOST 설정을 재평가합니다.


.env 파일의 DB_HOST 값을 확인하는 경우DB_HOST=127.0.0.1입니다.도커는 DB로 설정된 용기 이름을 필요로 하는 것으로 조사됐다.
【修正後】
DB_HOST=mysql
이렇게 하면 해결된다.

오류2: 연결이 거부됨

 Illuminate\Database\QueryException  : SQLSTATE[HY000] [1049] Unknown database 'sample' (SQL: select * from information_schema.tables where table_schema = sample and table_name = migrations and table_type = 'BASE TABLE')

  at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:665
    661|         // If an exception occurs when attempting to run a query, we'll format the error
    662|         // message to include the bindings with SQL, which will make this exception a
    663|         // lot more helpful to the developer instead of just the database's errors.
    664|         catch (Exception $e) {
  > 665|             throw new QueryException(
    666|                 $query, $this->prepareBindings($bindings), $e
    667|             );
    668|         }
    669| 

  Exception trace:

  1   PDOException::("SQLSTATE[HY000] [1049] Unknown database 'sample'")
      /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=mysql;port=3306;dbname=sample", "root", "password", [])
      /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  Please use the argument -v to see more details.

솔루션: DB_DATABASE 값 확인


오류 메시지에서 데이터베이스 "sample"이 존재하지 않습니다알겠습니다.
이 경우 연결할 데이터베이스의 이름을 다시 지정해야 합니다.
내 경우 DB'bookmark'에 연결하고 싶습니다.env 파일의 해당 부위는 다음과 같이 수정되었습니다.
【修正後】
DB_DATABASE=bookmark
이렇게 하면 연결할 수 있다.

오류 3: 수정 후 연결할 수 없습니다.


해결 방안: 여러 개의 env 파일이 있는지 확인


이 오류(?)일어날 때 제일 반했어.웃음 캐시를 수정하든 삭제하든 오류가 발생하기 때문에 파일을 다시 확인하기 위해 파일 이름으로 검색한 결과 두 개의'.env'가 발견되었습니다.
필요 없는 env 파일을 삭제하면 순조롭습니다.
migrate가 성공하면 맑아지고 아래 상태가 될 거예요.이게 똑딱똑딱 실행되는 느낌이 편하죠?
root@592de04c5bde:/var/www/html/web# php artisan migrate       
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.03 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.01 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0.01 seconds)

요약: 오류 정보를 읽고 env 파일을 수정합니다.


이러면 마이그레이션이 잘 안돼.env 파일의 값, 즉 환경 변수가 자주 틀리는 것 같습니다.DB가 없으면 개발에 착수할 수 없기 때문에 이곳을 무사히 넘고 싶다.그럼!

좋은 웹페이지 즐겨찾기