se reporta que en Postgre el script no esta generando autonumericos causando error de clave invalida.

Issue #69 new
Christian Salazar
repo owner created an issue

ERROR: llave duplicada viola restricción de unicidad «cruge_field_pkey»

al parecer tiene que ver con el atributo "serial" en nuevas versiones de postgre, porque hasta la version de postgre de dic2013 (la ultima que baje del repositorio desde debian actualizado) funciona bien.

desconozco que cambios hay y no dispongo de entorno postgre para probar.

Comments (5)

  1. Christian Salazar reporter

    reportada por Pablo:

    CDbException

    CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: la sintaxis de entrada no es válida para integer: «» LINE 1: ...UES (0, 1, 0, 20, 45, 1, 'Cedula', 'Cedula', '', '', '', '') ^. The SQL statement executed was: INSERT INTO "cruge_field" ("position", "required", "fieldtype", "fieldsize", "maxlength", "showinreports", "fieldname", "longname", "predetvalue", "useregexp", "useregexpmsg", "idfield") VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6, :yp7, :yp8, :yp9, :yp10, :yp11)

  2. Sportive Sport

    He conseguido la siguiente solución:

    //En el controlador ui modificar la siguiente función

    private function _fieldAdminForm($model){ if (isset($_POST[CrugeUtil::config()->postNameMappings['CrugeField']])) { $model->attributes = $_POST[CrugeUtil::config()->postNameMappings['CrugeField']]; // seleccionamos el siguiente valor de la secuencia y lo asignamos al idfields $sql="select nextval('cruge_field_idfield_seq');"; $connection=Yii::app()->db; $command=$connection->createCommand($sql); $row=$command->queryRow(); $model->idfield=$row["nextval"];

            if ($model->save()) {
                $this->redirect(array('fieldsadminlist'));
            }
        }
        $this->render("fieldsadminupdate", array('model' => $model));
    }
    

    Espero les sirva.....

  3. Christian Salazar reporter

    puede ser que Cruge al poner "0" en el idfield entonces esto no sea reconocido por el generador de autonumericos de postgre. Pero mi duda es: por qué en algunos entornos si funciona y en otros no.

    de todos modos estare pendiente y no dudo poner un commit que resuelva el issue.

    gracias de todos modos.

  4. Christian Salazar reporter

    1) quien crea el campo CrugeField es: https://bitbucket.org/christiansalazarh/cruge/src/60af8068f446/components/CrugeFactory.php?at=master#cl-247

    2) solicitado por: https://bitbucket.org/christiansalazarh/cruge/src/60af8068f446/components/CrugeUserManager.php?at=master#cl-472

    3) que es a su vez solicitado por el controller (create) : https://bitbucket.org/christiansalazarh/cruge/src/60af8068f446/controllers/UiController.php?at=master#cl-480

    4) que renderiza el formularion de edicion asi: https://bitbucket.org/christiansalazarh/cruge/src/60af8068f446/controllers/UiController.php?at=master#cl-486

    Si editaron solo a _fieldAdminForm, entonces tambien habran afectado la edicion del campo personalizado, y no solo la creacion.

    por lo tanto, en el caso de ustedes, la solucion (parche) debio ir en #3

    $cmd=Yii::app()->db->createCommand("select nextval('cruge_field_idfield_seq');"); 
    $row=$cmd->queryRow(); 
    $model->idfield=$row["nextval"];
    

    para que afecte solo a create. pero insisto, es un problema de config de servidor sql. a menos que se indague mas para ver la real causa del problema

  5. Log in to comment