Sobre Postgres

edited marzo 2008 in Dudas/Problemas
Ya esto lo postie en el foro de principiantes pero no me supieron dar solucion a lo que les pregunte. El problema que tengo es el siguiente.

tengo esto que sigue:

Modelo
class Accion extends ActiveRecord {

}
Controller
class AccionController extends StandardForm {
public $scaffold = true;
public function __construct(){
$this->ignore("id");
}

}

Estructura de la Tabla
CREATE TABLE "public"."accion" (
"id" SERIAL,
"nombre" VARCHAR(20) NOT NULL,
CONSTRAINT "acciones_nombre_key" UNIQUE("nombre"),
CONSTRAINT "acciones_pkey" PRIMARY KEY("id")
) WITH OIDS;

y cuando pruebo a ver si me pincha la vista me dice lo siguiente

KumbiaException: No se ha definido una llave primaria para la tabla 'accion' esto imposibilita crear el ActiveRecord para esta entidad

En el archivo /var/www/workspace/Ref/forms/db/active_record.php en la l?nea: 308

#0 /var/www/workspace/Ref/forms/controller/standard_form_controller.php(191): ActiveRecord->dump()
#1 [internal function]: StandardForm->insert()
#2 /var/www/workspace/Ref/kumbia.php(201): call_user_func_array(Array, Array)
#3 /var/www/workspace/Ref/public/index.php(76): Kumbia::main()
#4 {main}

y por esta razon no puedo trabajar con el gestor de BD postgres. Alguien podria decirme que puede ser esto o de que forma tengo que hacer para poder trabajar con postgres como si estuviera usando cualquier otro de los gestores de BD.

S@lu2

Comentarios

  • Prueba esta consulta en Postgres y la idea es que verifiques si te retorna la estructura de la BD es como un describe de Mysql
    SELECT a.attname as column_name, t.typname as data_type,
    CASE
    WHEN cc.contype=’p’ THEN ‘PRI’
    WHEN cc.contype=’u’ THEN ‘UNI’
    WHEN cc.contype=’f’ THEN ‘FK’
    ELSE ” END AS key,
    CASE WHEN a.attnotnull=false THEN ‘YES’ ELSE ‘NO’ END AS is_nullable,
    CASE WHEN a.attlen=’-1′ THEN (a.atttypmod - 4) ELSE a.attlen END as max_length,
    d.adsrc as column_default
    FROM pg_catalog.pg_attribute a
    LEFT JOIN pg_catalog.pg_type t ON t.oid = a.atttypid
    LEFT JOIN pg_catalog.pg_class c ON c.oid = a.attrelid
    LEFT JOIN pg_catalog.pg_constraint cc ON cc.conrelid = c.oid AND cc.conkey[1] = a.attnum
    LEFT JOIN pg_catalog.pg_attrdef d ON d.adrelid = c.oid AND a.attnum = d.adnum
    WHERE c.relname = ‘<TABLA>’ AND a.attnum > 0 AND t.oid = a.atttypid
    

    donde <TABLA> representa el nombre de la tabla a la que queremos interrogar para obtener sus metadatos.
  • edited 7:42
    En realidad esa consulta me dio una pila de errores a la hora de ejecutarla y al final no pude ver el resultado
  • Hola amigo ya detecte el Bug que se presenta en esa version seguro tuviste que haber descargado esa version del SVN lo que sucede es que al momento de ejecutar la consultar para obtener la meta-data de las tablas en postgres a pesar que la consulta que se ejecuta indica que debe devolver por ejemplo Field esta devuelve field esto genera problema al momento de que ActiveRecord comienza a definir las claves primaria y todo los demas datos, esto genera una sensibilidad de palabras entre mayus y minus, estoy trabajando para darle la vuelta a este detalle porq en las otras versiones esta funcionando, si quieres solventar el problema colocando un panito de agua caliente me lo puedes hacer saber para darte la solucion y trabajes con postgres el unico detalle es que si luego deseas trabajar con Mysql debes revertir el cambio, pero es una solucion al problema mientras se busca la solucion mas optima...
  • Hola amigo este Bug fue solventado tal como explico arriba si quieres hacer los cambios locales lo puedes ver en el svn...

    <!-- m --><a class="postlink" href="http://tools.assembla.com/kumbia/changeset/228">http://tools.assembla.com/kumbia/changeset/228</a><!-- m -->
Sign In or Register to comment.