"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP 데이터베이스 마이그레이션 관리 기술

PHP 데이터베이스 마이그레이션 관리 기술

2025-04-16에 게시되었습니다
검색:495

How to Manage Database Migrations in PHP

PHP에서 데이터베이스 마이그레이션을 관리하는 방법

데이터베이스 마이그레이션은 개발자가 일관되고 구조화 된 방식으로 데이터베이스 스키마의 변경 사항을 제어하고 관리 할 수 ​​있도록 애플리케이션 개발의 필수 부분입니다. PHP에서는 데이터베이스 마이그레이션 관리를 수동으로 수행 할 수 있지만 프로세스를 자동화하는 마이그레이션 도구를 사용하는 것이 더 효율적이고 오류가 적습니다. 마이그레이션 도구는 데이터베이스를 응용 프로그램의 코드와 동기화하여 스키마 변경을 처리하는 체계적인 방법을 제공합니다.

이 기사에서는 인기있는 라이브러리, 모범 사례 및 실제 사례 사용을 포함하여 PHP에서 데이터베이스 마이그레이션을 관리하는 방법을 살펴 봅니다.


1. 데이터베이스 마이그레이션이란 무엇입니까?

데이터베이스 마이그레이션은 데이터베이스 스키마의 변경 사항 (예 : 테이블 및 열 및 열을 작성, 업데이트 또는 삭제)을 버전화하고 해당 변경 사항을 제어 방식으로 적용하는 방법입니다. 이주는 팀이 다음을 허용합니다 :

  • 트랙 변경 : 마이그레이션은 스키마 변경의 버전이 기록을 제공하여 팀이 변경 사항과시기를 추적 할 수 있도록합니다.
  • 스키마 업데이트 자동화 : 마이그레이션은 자동으로 또는 단일 명령으로 실행할 수있어 데이터베이스 스키마가 일관된 방식으로 모든 환경 (개발, 준비, 생산)에서 업데이트되도록합니다.
  • 변경 사항 : 마이그레이션에 문제가 발생하면 롤백으로 롤백하여 개발 및 배포 중에 안전과 유연성을 제공 할 수 있습니다.

2. 마이그레이션이 중요한 이유는 무엇입니까?

  • 일관성 : 개발 팀의 모든 사람이 동일한 데이터베이스 스키마를 사용하도록합니다.
  • 자동화 : 마이그레이션은 자동으로 실행될 수있어 업데이트 중 수동 오류가 줄어 듭니다.
  • versioning : 마이그레이션은 시간이 지남에 따라 데이터베이스 스키마의 진화를 쉽게 추적 할 수 있습니다.
  • 배포의 용이성 : 배포 중에 마이그레이션이 도움이되므로 다양한 환경 (로컬, 스테이징, 생산)에서 스키마 변경을 쉽게 배포하고 동기화 할 수 있습니다.

3. PHP에서 마이그레이션을 관리하는 방법

PHP에서 데이터베이스 마이그레이션을 처리하는 몇 가지 방법이 있지만 가장 일반적인 접근 방식은 마이그레이션 라이브러리를 사용하는 것입니다. Phinx 와 같은 인기있는 PHP 라이브러리를 사용하여 수행하는 방법은 다음과 같습니다.


4. 데이터베이스 마이그레이션에 Phinx 사용

Phinx는 데이터베이스 마이그레이션을 작성하고 실행할 수있는 인기있는 PHP 마이그레이션 도구입니다. MySQL, PostgreSQL, SQLite 등과 같은 여러 데이터베이스 플랫폼을 지원합니다.

1 단계 : Composer

를 통해 Phinx 설치 Phinx를 설치하려면 작곡가를 사용하여 종속성으로 추가 할 수 있습니다.


작곡가에게는 Robmorgan/Phinx가 필요합니다

composer require robmorgan/phinx
2 단계 : 구성 파일

Phinx에는 연결 설정 및 기타 구성 옵션을 관리하기 위해 구성 파일 (phinx.php 또는 phinx.yml)이 필요합니다. 다음은 phinx.php의 예제 구성입니다 :


php 반품 [ 'Paths'=> [ '마이그레이션'=> 'db/마이그레이션', '씨앗'=> 'db/seeds' ],, '환경'=> [ '기본값'=> '개발', '개발'=> [ '어댑터'=> 'mysql', '호스트'=> 'localhost', 'name'=> 'your_database_name', '사용자'=> '루트', 'Pass'=> '', 'charset'=> 'utf8', ],, '생산'=> [ '어댑터'=> 'mysql', '호스트'=> 'production_host', 'name'=> 'your_production_database', '사용자'=> 'prod_user', 'pass'=> 'prod_password', 'charset'=> 'utf8', ]] ]] ];

 [
        'migrations' => 'db/migrations',
        'seeds' => 'db/seeds'
    ],
    'environments' => [
        'default' => 'development',
        'development' => [
            'adapter' => 'mysql',
            'host' => 'localhost',
            'name' => 'your_database_name',
            'user' => 'root',
            'pass' => '',
            'charset' => 'utf8',
        ],
        'production' => [
            'adapter' => 'mysql',
            'host' => 'production_host',
            'name' => 'your_production_database',
            'user' => 'prod_user',
            'pass' => 'prod_password',
            'charset' => 'utf8',
        ]
    ]
];

3 단계 : 마이그레이션 만들기

마이그레이션을 만들려면 다음 Phinx 명령을 사용할 수 있습니다.


PHP 공급 업체/bin/phinx 생성 제작자

php vendor/bin/phinx create CreateUsersTable


php Phinx \ Migration \ Abstract -Migration을 사용하십시오. 클래스 CreateUserserstable은 Abstract -Migration을 확장합니다 { 공개 기능 변경 () { $ table = $ this-> 테이블 ( '사용자'); $ table-> addcolumn ( 'name', 'string') -> addColumn ( '이메일', '문자열') -> create (); } }

table('users');
        $table->addColumn('name', 'string')
              ->addColumn('email', 'string')
              ->create();
    }
}
두 개의 열이있는 사용자 테이블을 만듭니다.

4 단계 : 마이그레이션 실행

마이그레이션이 생성되면 다음 명령을 사용하여 데이터베이스에 마이그레이션을 적용 할 수 있습니다.


PHP 공급 업체/빈/핀스 마이그레이션

php vendor/bin/phinx migrate


PHP 공급 업체/빈/Phinx Migrate -e 생산

composer require robmorgan/phinx
5 단계 : 롤백 마이그레이션

마이그레이션을 취소 해야하는 경우 (예 : 변경을 롤백하려면) Phinx는 다음 명령을 제공합니다.


PHP 공급 업체/빈/핀스 롤백

php vendor/bin/phinx rollback


PHP 공급 업체/빈/핀스 롤백 -T 20210101000000

php vendor/bin/phinx rollback -t 20210101000000


5. 데이터베이스 마이그레이션에 교리 마이그레이션 사용

교리 마이그레이션은 데이터베이스 마이그레이션, 특히 데이터베이스 상호 작용에 이미 교리 ORM을 사용하는 프로젝트의 또 다른 인기있는 도구입니다. 그것은 교리와 직접 통합되며 마이그레이션 관리를위한 일련의 명령을 제공합니다.

1 단계 : 교리 마이그레이션 설치

작곡가는 교리/이주가 필요합니다

composer require robmorgan/phinx
2 단계 : 교리 마이그레이션 구성

데이터베이스 연결 및 마이그레이션 경로를 정의하려면 구성 파일 (migrations.php)을 설정해야합니다.

예 MIGRATIONS.PHP 구성 :


php 교리 \ dbal \ drivermanager를 사용하십시오. 교리 \ 마이그레이션 \ configuration \ configuration을 사용하십시오. 교리 \ Migrations \ Tools \ Console \ Command를 사용하십시오. 교리 \ 마이그레이션 \ 도구 \ console \ consolerunner를 사용하십시오. // 데이터베이스 연결을 설정합니다 $ conn = driverManager :: getConnection ([[ 'url'=> 'mysql : // root :@localhost/your_database_name', ]); // 마이그레이션 구성을 설정합니다 $ config = 새 구성 ($ conn); $ config-> setMigrationsNamesPace ( 'app \ migrations'); $ config-> setMigrationsDirectory ( 'DB/Migrations'); // 마이그레이션 도구를 만듭니다 $ console = consolerunner :: createApplication ($ config); $ console-> run ();

composer require robmorgan/phinx
3 단계 : 마이그레이션 만들기

교리 CLI를 사용하여 마이그레이션을 생성 할 수 있습니다 :


PHP 공급 업체/빈/교리 마이그레이션 생성

php vendor/bin/doctrine-migrations generate

4 단계 : 마이그레이션 실행

마이그레이션을 실행하려면 사용 :


PHP 공급 업체/빈/교리 마이그레이션 마이그레이션

php vendor/bin/doctrine-migrations migrate

5 단계 : 롤백 마이그레이션

마이그레이션을 롤백하려면 사용 :


PHP 공급 업체/빈/교리 마이그레이션 실행 -Down

php vendor/bin/doctrine-migrations execute --down


6. PHP에서 마이그레이션 관리를위한 모범 사례

    버전 제어
  • : 항상 마이그레이션 파일을 버전 제어 (예 : git)에 커밋하십시오. 이렇게하면 팀이 동일한 데이터베이스 변경 사항을 추적하고 적용 할 수 있습니다.
  • 수동 변경을 피하십시오
  • : 데이터베이스에서 직접 수동 변경을 피하십시오. 마이그레이션을 사용하여 스키마를 변경하여 버전을 변경하고 추적 할 수 있습니다.
  • 설명 마이그레이션 이름
  • : 각 마이그레이션이 수행하는 작업을 쉽게 이해할 수 있도록 설명적인 방식으로 마이그레이션 파일을 이름으로 표시합니다 (예 : addIndextOUsStable 또는 CreateProductable).
  • 테스트 마이그레이션
  • : 잠재적 인 문제를 피하기 위해 생산에 적용하기 전에 스테이징 또는 개발 데이터베이스에서 마이그레이션을 항상 테스트하십시오.
  • 마이그레이션을 작고 점진적으로 유지합니다
  • : 크고 모 놀리 식 이동을 피하십시오. 대신, 디버깅하고 이해하기 쉽기 때문에 점진적인 변경을 수행하십시오.

7. 결론

데이터베이스 마이그레이션 관리는 모든 PHP 응용 프로그램 개발 프로세스의 필수 부분입니다.

Phinx

또는 Doctrine Migrations 와 같은 마이그레이션 도구를 사용하면 데이터베이스 스키마 변경을 관리하는 구조화되고 자동화 된 방법을 제공합니다. 이 도구는 수동 오류를 피하고 환경 간 일관성을 유지하며 데이터베이스 스키마가 제어되고 버전으로 진화하는지 확인합니다. 이러한 도구를 사용하면 응용 프로그램의 논리 구축에 집중하면서 데이터베이스가 항상 코드의 변경 사항과 동기화되도록합니다.


릴리스 선언문 이 기사는 https://dev.to/abhay_yt_52a8e72b213be229/how-to-manage-database-migrations-in-php-12bi?
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3