Responder al comentario

Secuencias en Symfony + PostgreSQL + Doctrine ( on demand sequence could not be created)

Estamos realizando una aplicación de geolocalización de contenido sobre Symfony 1.2. Una vez configurado toda la aplicación para trabajar sobre una base de datos PostgreSQL y instalar plugins como el mapfish para la gestión de puntos de interés, nos hemos encontrado con varios problemas en el core de la aplicación que no permetían el correcto funcionamiento de la aplicación.

 

Uno de los más curiosos ha sido un problema con las secuencias que daba un error del tipo: Doctrine_Sequence_Exception: on demand sequence "table_name_seq" could not be created.

al intentar incrementar la secuencia al hacer un insert en una tabla.

 

Después de investigar un poco nos dimos cuenta que realmente había una función dentro de /lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Pgsql.php que formateaba el nombre de la secuencia con un prefijo y un sufijo que hacía que la select petara.

 

La solución más senzilla es comentar la línia de la función nextId($seqName, $onDemand = true) dentro de /lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Pgsql.php

 

$sequenceName = $this->conn->quoteIdentifier($this->conn->formatter->getSequenceName($seqName), true);
$query = "SELECT NEXTVAL('" . $sequenceName . "')";

 

y sustituirlo por:

 

//$sequenceName = $this->conn->quoteIdentifier($this->conn->formatter->getSequenceName($seqName), true);
$query = "SELECT NEXTVAL('" . $seqName. "')";


 

y evitar de éste modo que formatee el nombre de la secuencia y todo funciona correctamente.

Responder

El contenido de este campo se mantiene privado y no se mostrará públicamente.
CAPTCHA
Esta pregunta se hace para comprobar que es usted una persona real e impedir el envío automatizado de mensajes basura.
CAPTCHA de imagen
Enter the characters shown in the image.