2010-03-26 3 views
18

나는 CakePHP를위한 약간의 이주 스크립트를 시도 해왔다. 그러나 나는 어떤 형태로든 그것들 모두에 문제가있다.CakePHP를위한 좋은 DB 마이그레이션?

라이브로 사용하고 작동하는 Cake의 이전 옵션에 대한 조언을 구하십시오.

나는 다음과 같은 "기능"싶습니다

  • 지원 CakePHP는 1.2 (예를 들어 1.3이 안정적이고 내 앱이 새로운 코드베이스로 마이그레이션 할 때 CakeDCs 마이그레이션은 옵션이 될 것입니다)에 대한
  • 지원 (또는 최소한 중지하지 마십시오) 다른 데이터베이스 구성을 가진 모델. 응용 프로그램/모델의 하위 폴더에
  • 지원 모델 나는 하나의 기본 키 필드와 필요가없는 몇 가지 특별한 테이블이 (케이크 규칙을 준수하지 않는 플러그인
  • 지원 테이블에
  • 지원 모델 그들을 지키기 위해)
  • Capistrano와 Git을 통한 자동화 된 배포를 잘 수행합니다.

레일스 스타일의 버전 관리 파일은 기존 스키마와 실제로 비교되는 버전 관리 스키마 파일이 필요하지 않습니다. 즉, 위의 대부분 요구 사항과 호환되지 않는 것을 제외하고는 Cake의 SchemaShell을 좋아합니다.

나는 쳐다 보면서 테스트 한 :

+0

+1 흥미로운 질문 –

+0

설명서를 무시하고 소스를 읽음으로써 필자는 필요한 모든 것을 스키마 셸에 만드는 방법을 발견했습니다. -f가 새로운 스키마를 생성하기 위해 "생성"하지 않는다는 것을 발견했습니다. " 그것은 "스키마에 모든 테이블 생성을 강제하는 데 사용됩니다 ...". 하지만 그뿐 아니라 문서에 없습니다. 또한 옵션을 사용하여 생성 된 스키마를 생성하고 업데이트하는 것과 같은 방식으로 Model 클래스를 무시하도록 업데이트하는 데에도 사용할 수 있습니다. –

+0

@Matin Westin - 문서의 위키에 그 통찰력을 기여하지 않으시겠습니까? – stevenf

답변

2

http://code.google.com/p/cakephp-migrations을 내가 플러그인을 가질 수 그것을 CakePHP 1.2로 만들자. 에서 볼 수있다 http://github.com/jrbasso/migrations

모든 것을 만들기 위해 케이크 스타일을 사용한다. yaml을 사용하지 않고 객체를 사용하여 테이블을 정의합니다. 당신은 문제없이 케익에서 모델을 가져올 수 있습니다 ...

+0

쿨하겠습니다. –

4

저는 CakeDC에서 나온 것을 제외하고는 Juan의 플러그인과 다른 모든 것을 신속하게 시도한 후에이 "주제"를 내 결과로 업데이트하려고합니다 ... 나는 ' CakePHP 1.3에서 업데이트 된 관련 앱이 있고 마이그레이션 플러그인이 필요합니다 1.3

저에게 맞지 않는 오류 및 플러그인에 대한 의견은 주로 "내 요구 사항에 맞지 않음"또는 "실수 한 사항"으로 읽어야합니다 그들을 시도하는 동안 ". 어느 정도는 문서의 개정을위한 탄원과 같은 의견을 읽을 수도 있습니다. 테스트 한 플러그인이 본질적으로 결함이 있고 버그가 있거나 고장났다는 것을 의미하지는 않습니다. 나는 그들 모두가 올바른 환경과 올바른 워크 플로우를 위해 일한다고 확신한다.

CakePHP의 스키마 쉘

  • 내가 좋아하는 간단한 개념을 가지고 있습니다. 스키마는 개정판을 관리하는 데 사용되는 코드와 SCM에 연결됩니다.

  • 유용한 점들.그 요점은 :

  • 자동 배포에는 적합하지 않은 것으로 보입니다. 나는. update 명령은 테이블 만 수정할 수 있고 새로 추가되거나 제거 된 테이블은 처리 할 수 ​​없습니다. 그것들은 자신의 쉘 명령에 의해 처리되어 캡 스타일 배포가 복잡해집니다. 또한 새 테이블로 업데이트를 실행하면 스크립트가 존재하지 않는 테이블을 "변경"하려고 할 때 오류가 발생합니다. 이것이 의도 된 것이거나 내가 가지고있는 문제인지 확실합니다. 그들이 스키마 셸을했다처럼

CakeDC 마이그레이션

  • 사운드

    을 (아직 응답으로 구글 그룹에 물어 본)하고 "고정". 문서는 약간 더 복잡한 절차를 설명하지만 적어도 원하는대로 작동 할 수 있습니다.

joelmoss YAML, 그리고 후안의 마이그레이션

  • 이 모든 주 레일 버전 화 파일의 개념과 "흐름이 완만"그들 사이 "다우닝". 필자는 스키마 이전이 소스 코드와 동일하게 수행되지 않으면 업데이트되거나 롤백 될 때 프로젝트에 대한 상황을 볼 수 없기 때문에이 기능을 더 좋아하지 않습니다. 마이그레이션 스크립트에서 기존 데이터를 마이 그 레이션 할 수있는 능력 없이도 살 수 있습니다.

  • 이들 모두는 마이그레이션 스크립트 이외의 방법으로 데이터베이스에 손을 대지 않을 것으로 예상됩니다. 내가 좋아하는 MySql-GUI를 열어서 내가 행복 할 때까지 놀고이 스크립트를 통해 "diff"를 생성 할 수 없다. (적어도 간단한 테스트 중에는 문서화 된 방법을 찾지 못했습니다.) YAML 또는 PHP 파일에 수동으로 변경 사항을 작성해야합니다. 30 개가 넘는 테이블이있는 기존 프로젝트에서 시작하기 때문에 수동으로 스키마를 다시 작성하지 않아도됩니다. 그러나 이러한 플러그인 중 일부는 모든 테이블에서 좋은 시작점 파일을 만들지 못했습니다. 이것은 아마도 내 간단한 테스트 및/또는 그러한 기능에 대한 문서를 찾을 수 없었기 때문일 수도 있습니다. 나는 이들 대부분을위한 소스 코드에 뛰어 들지 않았다.

내 다음 단계는 내 프로젝트를 CakePHP 1.3으로 업데이트하고 마지막 플러그인을 시도하는 것 같습니다. 하지만 시간이 언제 있을지 모르겠습니다. (즉, 누구도 숨을 멈추지 마십시오)

이러한 플러그인이 어떻게 작동하는지 오해하고 자신을 어떻게 작동시키는 지 알 수 있습니다. 나는 코멘트의 답장을 듣고 행복 할 것이다.

3

레일스 마이그레이션이 마음에 들면, 레일스 마이그레이션을 사용하십시오.이 보석을보세요 https://github.com/thuss/standalone-migrations. 나는 매일 매일의 일에 cakephp와 함께이 보석을 사용한다.

+0

나는 Ruby를 좋아합니다. 이제 PHP 프로젝트를 처리해야합니다. Rails Migrations가 내 일을 좀 더 쉽게하기를 바랍니다 :) –

1

프로덕션 환경에서 1.3.x 및 2.x 용으로 CakeDC migrations plugin을 사용했으며 만족해했습니다. 1.3.x 버전에서 마이그레이션을 만드는 것과 관련된 몇 가지 버그가 있지만 쉽게 수정할 수 있습니다.

0

여기에서 3.x Migrations 플러그인을 사용하십시오.

다른 구형 도구의 모든 문제는 의도적으로 수정되었습니다. 그리고 매주 더 많은 기능과 수정 사항을 제공합니다.

기존 1.x 및 2.x 응용 프로그램에 새 도구를 쉽게 사용할 수도 있습니다. 그런데 방금 how to use 3.x Migrations in 2.x apps에 게시물을 게시했습니다.