현실은 우리가 원하는 것은 이것입니다 : http://www.liquibase.org/
Liquibase는 데이터베이스 변경 사항을 추적, 관리 및 적용하기위한 데이터베이스 독립적 라이브러리 인 오픈 소스 (Apache 2.0 라이센스)입니다. 간단한 전제를 기반으로합니다. 모든 데이터베이스 변경 내용은 사람이 읽을 수는 있지만 추적 가능한 형식으로 저장되고 소스 제어로 체크인됩니다.
그러나 우리의 개발 과정은 그것을 지원하지 않습니다. 우리는 일반적으로 자체 스크립트를 통해 데이터베이스를 수정하지 않으며, 활성화하는 플러그인을 사용합니다. 조회 데이터를 수정하기 위해 DML 스크립트를 작성하지 않고 소스 코드 제어에 체크인 한 다음 관리 페이지에서 UI를 사용하므로 마이그레이션 중에 변경 사항을 복제 할 때 나중에 사용할 소스 코드가 없습니다.
그러나이 페이지에 나열된 일부 도구를 사용하여 일부를 에뮬레이션 할 수 있습니다.
/programming//q/225772/149060
예를 들어, 리퀴드베이스에는 선택적으로 데이터 변경 사항을 포함하는 diff 기능이 있습니다. 테스트 데이터를 포함 할 가능성이있는 특정 테이블 (예 : post 등)을 제외하고 스키마와 데이터 차이를 스크립트에 출력하고 스크립트를 프로덕션 데이터베이스에 적용 할 수 있습니다.
MySQLDiff (StackOverflow 질문에서 논의 됨)는 스키마 차이를 수행하며 저자 는 테이블 방식 데이터 차이에 대해 mysql_coldiff 를 권장 합니다 .Java 도구 (liquidbase)가 서버에 너무 많은 리소스를 사용하는 경우 둘 다 perl로 구현됩니다. PC에서 도구를 실행하면 문제가 해결됩니다 ...
실제로 올바르게하려면 설정, 옵션 또는 기타 구성 변경 및 스키마 변경과 관련된 모든 SQL을 기록하고 기록 된 코드를 마이그레이션 서버로 변환하여 프로덕션 서버에서 재생해야합니다. 서버에서 마이그레이션 스크립트를 재생하고 워드 프레스 사이트 파일 (해당되는 경우 업로드 제외)을 복사하면 금메달이됩니다.
따라서 가장 좋은 방법은 데이터베이스를 병합하는 방법을 빌드하는 대신 필요한 SQL을 트랩하고 저장 한 다음 기록 된 코드에서 마이그레이션 스크립트를 생성하는 개발자의 마이그레이션 작성기 플러그인 인 것 같습니다. 준비와 생산 사이. 해결하기가 더 간단한 문제인 것 같습니다.
@bueltge의 인스트루먼트 후크 코드에서 영감을 얻기 위해 플러그인을 호출하면 https://gist.github.com/1000143 (SAVEQUERIES 방향과 종료 후크 방향으로 나를 가리켜 주신 G +를 통해 Ron Rennick에게 감사드립니다. 그것을 찾도록 이끌어주세요)
대신 SAVEQUERIES 출력을 얻도록 변경하십시오.
-관리자 상태에서만 실행
-모든 선택을 필터링
-종료 훅의 테이블에 결과를 저장
-현재 수행중인 작업에 따라 출력 트래핑을 선택적으로 전환 할 수 있습니다.
예를 들면 다음과 같습니다.
캡처 이름 : 플러그인 XYZ 활성화 및 구성
캡처 상태 토글-설정
... 플러그인 XYZ 설치 및 구성
캡처 상태 토글-해제
마이그레이션 스크립트 내보내기 : 플러그인 XYZ 활성화 및 구성
내보내기 버튼을 누르면 필터링 된 트랩 된 SQL이있는 팝업 텍스트 필드가 생성됩니다. mysql에 대한 명령 줄 호출을 통해 쉘 스크립트로 사전 형식이 지정됩니다. 마이그레이션 코드 폴더에 복사하여 붙여넣고 소스 코드 저장소에 추가하십시오.
작업하는 동안 캡처를 켜고 끄는 데주의를 기울이고 프로덕션 데이터베이스를 준비 데이터베이스와 동등한 구성으로 가져 오는 완벽한 마이그레이션 스크립트를 생성 할 수 있습니다.
더 좋은 점은 테스트 할 수있는 스크립트 (또는 일련의 동일한 것)입니다. 복제 가능하고 테스트 가능한 마이그레이션 스크립트가있는 이미징 !!
난 이미 사랑에 빠졌어
다른 사람?