2013-09-24 7 views
1

Я создаю файлы развертывания для моей mysql-базы данных с phing и dbdeploy.dbdeploy error with - // in deploy-file

Выход из 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. В базе данных произошла ошибка. Если я удалю файл //, то файл отверстия будет правильным.

Вот кусок моего Phing сборки-скрипт, так что вы можете увидеть, как я генерации .sql-файла с dbdeploy:

<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 генерировать файл поврежден?

За вашу помощь!

+0

Откуда у вас эта свалка? Как вы его воспроизводите? – tadman

+0

Дамп происходит из dbdeploy ... Я обновил вопрос, чтобы вы могли видеть, как я генерирую .sql-файл –

+0

Как вы его воспроизводите? MySQL использует стиль '/ * ... * /' комментариев в резервных копиях mysqldump, но '--' должен работать. – tadman

ответ

0

Прошло много времени с тех пор, как был задан этот вопрос, однако я столкнулся с той же проблемой и сумел разобраться, где Нильс исходит из этого.

Я думаю, мы оба столкнулись с проблемой, потому что мы оба следовали популярный учебник по Phing и dbdeploy Дэйв Маршалл здесь: http://davedevelopment.co.uk/2008/04/14/how-to-simple-database-migrations-with-phing-and-dbdeploy.html

В своем примере SQL делат файл, он включает в себя - // на вершине которой, если вместо этого заменить комментарий в/* .... */format, избегайте этой проблемы!

Так что я бы сказал, что это ошибка в учебнике, которому сейчас 8 лет. Дэйв отмечает в начале учебника, что около 4 лет назад он перешел на другой метод, поэтому вполне понятно, что в учебнике есть ошибка! Я отправлю комментарий, запрашивающий обновление, хотя, потому что его страница является результатом поиска в верхнем рейтинге при поиске темы, поэтому было бы хорошо, если бы мы могли спасти людей той же самой проблемой, которую мы имели!

Это позор phing не дает более подробного отчета об ошибке в виде исключения SQL - есть идея внести вклад в скрипт dbdeploy!