El problema de los booleanos en Yii usando postgreSQL

error-boolean-integer-yii-postgres

Actualmente Yii en su versión mas reciente (1.1.14) y por lo menos desde la versión 1.0, trae por defecto un inconveniente para el trabajo de inserción en tipos de datos BOOLEAN en el motor de datos PostgreSQL. A continuación un breve recorrido de la problemática, incluyendo la resolución del problema. El ejemplo es en base a: Debian Wheezy, Apache 2.2.22, PHP 5.4.4, PostgreSQL 9.2, Yii 1.1.14.

.

CREATE TABLE tipo_de_datos
(
id integer NOT NULL DEFAULT nextval(‘”tipo-de-datos_id_seq”‘::regclass), — clave primaria
nombre character varying(60) NOT NULL, — campo tipo character varying de 60
valido boolean NOT NULL DEFAULT true, — tipo boolean TRUE o FALSE
creado_en timestamp without time zone, — fecha y hora de creacion del registro timestamp without time zone
actualizado_en timestamp without time zone NOT NULL DEFAULT now(), — fecha y hora de creacion del registro timestamp without time zone
CONSTRAINT pk_id PRIMARY KEY (id)
)

boolean-yii-postgres

boolean-yii-postgres

E.

..:: El error y objetivo de esta entrada:

CDbCommand failed to execute the SQL statement: SQLSTATE[42804]: Datatype mismatch: 7 ERROR: la columna «valido» es de tipo boolean pero la expresión es de tipo integer
LINE 1: … “nombre”, “creado_en”, “actualizado_en”) VALUES (1, ‘prueba…
^
HINT: Necesitará reescribir la expresión o aplicarle una conversión de tipo.. The SQL statement executed was: INSERT INTO “tipo_de_datos” (“valido”, “nombre”, “creado_en”, “actualizado_en”) VALUES (:yp0, :yp1, :yp2, :yp3)

.

error-boolean-integer-yii-postgres

error-boolean-integer-yii-postgres

.

..:: Solución

Comentar la linea: ‘emulatePrepare’ => true, en protected/config/main.php

Para saber mas sobre emulatePrepare y el por que quitarlo visite los siguientes enlaces:

http://www.yiiframework.com/doc/api/1.1/CDbConnection#emulatePrepare-detail

http://www.yiiframework.com/forum/index.php/topic/33152-database-error-convert-boolean-to-integer/

https://bugs.php.net/bug.php?id=62593

Una vez comentada dicha linea (por defecto en el config/main.php en la linea 57) debería guardar el registro.

.

boolean-yii

#Yii guardando booleano en postgreSQL

Anuncios

Un comentario en “El problema de los booleanos en Yii usando postgreSQL

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s