Migration 데이터베이스 마이그레이션 도구 Phinx

설명

Phinx는 개발자가 데이터베이스를 간단하게 수정하고 유지 관리할 수 있게 해줍니다. 이는 수동으로 SQL 문을 작성하는 것을 피하고, 강력한 PHP API를 사용하여 데이터베이스 마이그레이션을 관리합니다. 개발자는 버전 제어를 사용하여 데이터베이스 마이그레이션을 관리할 수 있습니다. Phinx는 서로 다른 데이터베이스 간의 데이터 마이그레이션을 쉽게 수행할 수 있게 해주며, 어떤 마이그레이션 스크립트가 실행되었는지를 추적할 수 있습니다. 개발자는 데이터베이스 상태에 대한 걱정 없이 더 나은 시스템을 작성하는 데 집중할 수 있습니다.

프로젝트 주소

https://github.com/cakephp/phinx

설치

composer require robmorgan/phinx

공식 한국어 문서 주소

자세한 사용은 공식 한국어 문서를 참조하십시오. 여기서는 webman에서 설정 및 사용 방법만 설명합니다.

https://tsy12321.gitbooks.io/phinx-doc/content/

마이그레이션 파일 디렉토리 구조

.
├── app                           애플리케이션 디렉터리
│   ├── controller                컨트롤러 디렉터리
│   │   └── Index.php             컨트롤러
│   ├── model                     모델 디렉터리
......
├── database                      데이터베이스 파일
│   ├── migrations                마이그레이션 파일
│   │   └── 20180426073606_create_user_table.php
│   ├── seeds                     테스트 데이터
│   │   └── UserSeeder.php
......

phinx.php 구성

프로젝트 루트 디렉터리에 phinx.php 파일을 생성합니다.

<?php
return [
    "paths" => [
        "migrations" => "database/migrations",
        "seeds"      => "database/seeds"
    ],
    "environments" => [
        "default_migration_table" => "phinxlog",
        "default_database"        => "dev",
        "default_environment"     => "dev",
        "dev" => [
            "adapter" => "DB_CONNECTION",
            "host"    => "DB_HOST",
            "name"    => "DB_DATABASE",
            "user"    => "DB_USERNAME",
            "pass"    => "DB_PASSWORD",
            "port"    => "DB_PORT",
            "charset" => "utf8"
        ]
    ]
];

사용 제안

마이그레이션 파일은 코드가 합쳐진 후에는 수정할 수 없으며, 문제가 발생할 경우 새로운 수정 파일이나 삭제 작업 파일을 만들어 처리해야 합니다.

데이터베이스 테이블 생성 작업 파일 명명 규칙

{time(auto create)}_create_{테이블명 영어 소문자}

데이터베이스 테이블 수정 작업 파일 명명 규칙

{time(auto create)}_modify_{테이블명 영어 소문자+구체적인 수정 항목 영어 소문자}

데이터베이스 테이블 삭제 작업 파일 명명 규칙

{time(auto create)}_delete_{테이블명 영어 소문자+구체적인 수정 항목 영어 소문자}

데이터 채우기 파일 명명 규칙

{time(auto create)}_fill_{테이블명 영어 소문자+구체적인 수정 항목 영어 소문자}