olá, estou tentando fazer a migração do banco de dados para a versão do repositório que está no github, porém estou encontrando um problema na hora de executar o phing na hora do migrate ele da o seguinte erro:
Execution of target "migrate" failed for the following reason: /var/www/misc/build.xml:142:16: [wrapped: pgsql is not supported by dbdeploy task.]
BUILD FAILED
/var/www/misc/build.xml:142:16: [wrapped: pgsql is not supported by dbdeploy task.]
Total time: 0.2560 seconds
fiz uma busca no google porém não achei nada relacionado.. fiz a instalação do phing conforme o manual.. não sei qual a razão dele não ta suportando o pgsql pelo o dbdeploy.. se alguem tiver alguma luz.. desde já agradeço
Autor: Eduardo Junior
55 comentários
url="pgsql:host=${project.conf.dbdeploy.hostname};dbname=${project.conf.dbdeploy.dbname}"
userid="${project.conf.dbdeploy.username}"
password="${project.conf.dbdeploy.password}"
dir="${project.conf.curdir}/misc/database/deltas"
outputfile="${project.conf.builddir}/${project.conf.dbdeploy.deployfile}"
undooutputfile="${project.conf.builddir}/${project.conf.dbdeploy.undofile}" /> *pgsql is not supported by dbdeploy task ta dizendo que o dbdeploy instalado pelo o phing não suporta o pgsql da forma que ta nessa comando. dando um ls no diretorio onde está o dbdeploy root@infocentro-desktop:/usr/share/php/phing/tasks/ext/dbdeploy# ls
DbDeployTask.php DbmsSyntaxFactory.php DbmsSyntaxMsSql.php DbmsSyntaxMysql.php DbmsSyntax.php DbmsSyntaxSQLite.php Estranho não ter a classe DbmsSyntaxPGSQL.php por exemplo, já desisntalei e instalei o phing e nada de vim a tal classe.. olhei a documentação dele e achei isso: PDOSQLExecTask The PDOSQLExecTask executes SQL statements using PDO. Examples <pdosqlexec url="pgsql:host=localhost dbname=test">
<fileset dir="sqlfiles">
<include name="*.sql"/>
</fileset>
</pdosqlexec> uma forma totalmente diferente de usar o pgsql com o phing. ai usa o pdosqlexec e não o dbdeploy Do jeito que ta no build.xml não achei referências sobre o comando da forma que está lá quando é pra ser usando com o pgsql, só acho sobre sqlite e mysql. a minha dúvida é por que funcionou com vocês e não comigo.. já que segui os mesmos passos.. tentei instalar o dbdeploy sem usar o phing baixando do sourceforge peardbdeploy.sourceforge.net/docs/ nele vem o arquivo com a classe pro pgsql porem não consegui fazer funcionar ainda..
class DbmsSyntaxPgsql extends DbmsSyntax
{
public function generateTimestamp()
{
return "current_timestamp";
} }
?>
depois editei o arquivo /usr/share/php/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php e alterei a seguinte função: public function getDbmsSyntax()
{
switch ($this->dbms){
case('sqlite') :
require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php';
return new DbmsSyntaxSQLite();
case('mysql'):
require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php';
return new DbmsSyntaxMysql();
case('mssql'):
require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php';
return new DbmsSyntaxMsSql();
default:
throw new Exception($this->dbms . ' is not supported by dbdeploy task.');
}
} acrescentando a seguinte linha case('pgsql'):
require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxPgSql.php';
return new DbmsSyntaxPgsql(); ficando assim: public function getDbmsSyntax()
{
switch ($this->dbms){
case('sqlite') :
require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php';
return new DbmsSyntaxSQLite();
case('mysql'):
require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php';
return new DbmsSyntaxMysql();
case('mssql'):
require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php';
return new DbmsSyntaxMsSql();
case('pgsql'):
require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxPgSql.php';
return new DbmsSyntaxPgsql();
default:
throw new Exception($this->dbms . ' is not supported by dbdeploy task.');
}
} depois rodei o comando phing -f build.xml migrate e ele fez o trabalho de boa.. bom fica ai a dica pra quem passar pelo o mesmo que eu passei
Marcelo GomesE-Mail: mti6@live.itProjeto i-Educar, Desenvolvimento e AjudasPortal do Soft S.A.