2013-09-24 4 views
1

phing 및 dbdeploy를 사용하여 mysql 데이터베이스의 deployment-files를 생성하고 있습니다.dbdeploy 오류 (배포 파일에서 - //)

다음과 같은 외모를 생성하는 dbdeploy 파일의 출력 :

-- Fragment begins: 8 -- 
INSERT INTO changelog 
           (change_number, delta_set, start_dt, applied_by, description) VALUES (8, 'Main', NOW(), 'dbdeploy', '8-add_tracking_code.sql'); 
--// 
ALTER TABLE `order` ADD `tracking_code` VARCHAR(255) NOT NULL; 
UPDATE changelog 
          SET complete_dt = NOW() 
          WHERE change_number = 8 
          AND delta_set = 'Main'; 
-- Fragment ends: 8 -- 

문제가있다 - // ALTER 문 전에. 데이터베이스에 오류가 발생했습니다. 내가 -// 구멍 파일을 제거하면 올바른 ist.

<target name="dbdeploy-migrate-all"> 

     <!-- load the dbdeploy task --> 
     <taskdef name="dbdeploy" classname="phing.tasks.ext.dbdeploy.DbDeployTask"/> 

     <echo message="Loading deltas from ${build.dbdeploy.alters_dir}" /> 

     <property name="build.dbdeploy.deployfile" value="${build.dbdeploy.deploy_dir}/deploy-${DSTAMP}${TSTAMP}.sql" /> 
     <property name="build.dbdeploy.undofile" value="${build.dbdeploy.undo_dir}/undo-${DSTAMP}${TSTAMP}.sql" /> 

     <!-- generate the deployment scripts --> 
     <dbdeploy 
      url="mysql:host=${db.host};dbname=${db.name}" 
      userid="${db.user}" 
      password="${db.pass}" 
      dir="${build.dbdeploy.alters_dir}" 
      outputfile="${build.dbdeploy.deployfile}" 
      undooutputfile="${build.dbdeploy.undofile}" /> 

     <!-- execute the SQL - Use mysql command line to avoid trouble with large files or many statements and PDO --> 
     <property name="mysql.command" value="${progs.mysql} -h${db.host} -u${db.user} -p${db.pass} ${db.name} &lt; ${build.dbdeploy.deployfile}" /> 
     <echo message="Executing command: ${mysql.command}" /> 
     <exec 
      command="${mysql.command}" 
      dir="${base.path}" 
      checkreturn="true" /> 

    </target> 

왜 손상된 파일을 생성 dbdeploy 않습니다 당신이 어떻게 dbdeploy와 .SQL 파일을 생성하고 볼 수 있도록 여기에

내 phing 빌드 스크립트의 조각인가?

귀하의 도움을 요청하십시오!

+0

이 덤프는 어디에서 가져 왔습니까? 너는 어떻게 그것을 재연하고 있니? – tadman

+0

덤프는 dbdeploy에서 발생합니다 ... .sql-File을 생성하는 방법을 볼 수 있도록 질문을 업데이트했습니다 –

+0

어떻게 재연하고 있습니까? MySQL은'mysqldump' 백업에서'/ * ... * /'주석 스타일을 사용하지만'--'는 여전히 작동해야합니다. – tadman

답변

0

이 질문 이후로 오랜 시간이 지났지 만 동일한 문제가 발생하여 Niels가 어디에서 왔는지 알아 냈습니다. 어느 상단 // - 그는 포함 파일 delat 자신의 예를 들어 SQL에서 http://davedevelopment.co.uk/2008/04/14/how-to-simple-database-migrations-with-phing-and-dbdeploy.html

:

나는 우리 모두가 여기 데이브 마샬에 의해 phing 및 dbdeploy에 인기있는 튜토리얼을 따라하기 때문에 우리 둘 다 문제 다 퉜다 생각/* .... */format의 주석으로 대신 쓰면이 문제를 피할 수 있습니다!

저는 이것이 8 년 된 튜토리얼의 버그라고 말하고 싶습니다. 데이브 (Dave)는 약 4 년 전 다른 방법으로 옮겨 갔다. 튜토리얼의 맨 위에는 버그가 있다는 것을 이해할 수있다. 그의 페이지가 주제를 검색 할 때 최고 순위의 검색 결과이기 때문에 업데이트를 요청하는 의견을 제출할 것입니다. 그래야 우리가 가진 동일한 문제를 사람들에게 저장할 수 있다면 좋을 것입니다!

phing은 SQL 예외 형태로 자세한 오류 보고서를 제공하지 않았습니다. dbdeploy 스크립트에 대한 기여도가 있습니다.