Hola a todos.
No puedo insertar datos a una tabla, mediante un formulario generado por
CRUD.
Esta es la tabla (postgresql):
\d clientes
Table "public.clientes"
Column | Type | Modifiers
-
--------+-----------------------+-------------------------------------------------------
id | integer | not null default
nextval('clientes_id_seq'::regclass)
nombre | character varying(50) |
cif | character(9) | not null
Indexes:
"clientes_pkey" PRIMARY KEY, btree (id)
Para generar los formularios he hecho lo siguiente.
symfony generate:app backend
symfony generate:module clientes
symfony propel:build-chema
symfony propel:build-forms
symfony propel:generate-crud backend clientes Clientes
Accedo a http://localhost/proyecto/backend_dev.php/clientes, y puedo ver
el listado de estos.
El caso es que puedo modificarlos y borrarlos, pero en el caso de crear
uno nuevo, me produce el siguiente error:
[PropelException]
Unable to get sequence id. [wrapped: Could not execute query [Native
Error: ERROR: no existe la relación «clientes_seq»] [User Info: SELECT
nextval('clientes_SEQ')]]
Esta es la estructura de la tabla que tengo en schema.yml:
clientes:
_attributes: { idMethod: native }
id: { type: INTEGER, required: true, autoIncrement: true,
primaryKey: true }
nombre: { type: VARCHAR, size: '50' }
cif: { type: CHAR, size: '9', required: true }
Creo que el fallo viene a que la relación que busca debería ser
"clientes_id_seq", no "clientes_SEQ", por eso funciona al hacer un
update y un delete, pero no un insert.
¿Alguien sabe que puedo estar haciendo mal?.
- --
Saludos cordiales.
Pablo.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFI83u6K7lGsMchFswRAnD+AJ4+2Hum8pPEjCCBH0dKM/vADNQsqQCfWvme
nZoINcIrSr/s0ISNuEzvX+c=
=WfgV
-----END PGP SIGNATURE-----
> contanos un poco como definiste la tabla en el yml y luego como la creaste.
> ...pasa que en symfony 1.0 el propel no soporta el tipo de dato
> "serial" para poder generar correctamente los campos de las tablas
> declarados como "autoincrement" (un campo delcarado como autoincrement
> debería generarse como serial y en la estructura debería verse como
> "integer nextval('clientes_id_seq'::regclass)" ).
> Entonces, propel hace un campo del tipo integer y crea la secuencia de
> la tabla con el nombre "clientes_seq" y es el mismo propel el que
> maneja el valor de la secuencia incrementándola. Por esto, es que te
> tira el error de que no encuentra la secuencia y que puede ser
> solucionado fácilmente, pero debés tener algunas precauciones.
Hola.
Yo estoy usando la versión 1.1.4, no la 1.0.
El schema.yml se ha generado al ejecutar symfony propel:build-schema. No
lo he creado yo manualmente.
Como ya he dicho en un mensaje posterior he generado un xml con symfony
propel:build-schema --xml y entonces ha funcionado.
¿Hay alguna otra forma de solucionarlo?.
Muchas gracias por el comentario.
- --
Saludos cordiales.
Pablo.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFI86HnK7lGsMchFswRAgU0AKCP3W3uE2BqGUnpjfacEAJYto85WgCfZOE+
y3G/E3QesJgQOGeZWG720Cw=
=4kvr
-----END PGP SIGNATURE-----
> contanos un poco como definiste la tabla en el yml y luego como la creaste.
> ...pasa que en symfony 1.0 el propel no soporta el tipo de dato
> "serial" para poder generar correctamente los campos de las tablas
> declarados como "autoincrement" (un campo delcarado como autoincrement
> debería generarse como serial y en la estructura debería verse como
> "integer nextval('clientes_id_seq'::regclass)" ).
> Entonces, propel hace un campo del tipo integer y crea la secuencia de
> la tabla con el nombre "clientes_seq" y es el mismo propel el que
> maneja el valor de la secuencia incrementándola. Por esto, es que te
> tira el error de que no encuentra la secuencia y que puede ser
> solucionado fácilmente, pero debés tener algunas precauciones.
¿Lo has solucionado en la versión 1.0.x?.
He instalado la versión 1.0.18 y no se soluciona creando un schema.xml,
al igual que pasa en la versión 1.1.4
- --
Saludos cordiales.
Pablo.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD4DBQFI88CtK7lGsMchFswRAj2kAJi6OOqFWp6YDmJbL7+oiTMY2qqwAJ9X8gdL
3Y4xrYh+Q2DTghZvi5/AXQ==
=MQVU
-----END PGP SIGNATURE-----
ya, he mirado el manual [1] y ahi esta como definir el nombre de la
secuencia, asi que creo resta que generes el schema.yml en base al
schema.xml (hay un comando para esto) y agregues al .yml el nombre de
las secuencias correctas.
[1] http://www.librosweb.es/symfony/capitulo8/sintaxis_extendida_del_esquema.html
> ya, he mirado el manual [1] y ahi esta como definir el nombre de la
> secuencia, asi que creo resta que generes el schema.yml en base al
> schema.xml (hay un comando para esto) y agregues al .yml el nombre de
> las secuencias correctas.
>
>
> [1] http://www.librosweb.es/symfony/capitulo8/sintaxis_extendida_del_esquema.html
Muchas gracias por la ayuda.
Así es como lo he solucionado finalmente.
- --
Saludos cordiales.
Pablo.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFI9D+JK7lGsMchFswRAkOXAKCEtyvp8TZeiIU+U+0PIw/iBH/hKgCePeoD
SethutuZiUrFt+qvZXVSyaY=
=zF1v
-----END PGP SIGNATURE-----