mejorando el schema y fixtures, validaciones
(por favor, citen al responder que el mensaje es largo, gracias) Hola a todos! Haciendo algunas pruebas para mejorar la creación de nuestros schemas me encuentro con lo siguiente: Si habilito el propel.validate.schema en true, no puedo generar los .sql: ragnarok@ntbkragnarok:~/public_html/alba/alba$ ./symfony propel-build-sql
schema converting "/home/ragnarok/publ.../alba/config/schema.yml" to XML schema putting /home/ragnarok/public_h...lba/config/generated-schema.xml Buildfile: /home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/build.xml [resolvepath] Resolved /home/ragnarok/public_html/alba/alba/config to /home/ragnarok/public_html/alba/alba/config
propel-project-builder > check-project-or-dir-set: propel-project-builder > check-project-set: propel-project-builder > set-project-dir: propel-project-builder > check-buildprops-exists: propel-project-builder > check-buildprops-for-propel-gen: propel-project-builder > check-buildprops: propel-project-builder > configure: [echo] Loading project-specific props from /home/ragnarok/public_html/alba/alba/config/propel.ini [property] Loading /home/ragnarok/public_html/alba/alba/config/propel.ini propel-project-builder > sql: [phing] Calling Buildfile '/home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/build-propel.xml' with target 'sql' [property] Loading /home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/./default.properties propel > check-run-only-on-schema-change: propel > sql-check: propel > pgsql-quoting-check: propel > sql: [echo] +------------------------------------------+ [echo] | | [echo] | Generating SQL for YOUR Propel project! | [echo] | | [echo] +------------------------------------------+ [phingcall] Calling Buildfile '/home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/build-propel.xml' with target 'sql-template' [property] Loading /home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/./default.properties propel > sql-template: [propel-sql] Processing: generated-schema.xml [PHP Error] DOMDocument::schemaValidate(): Element 'database', attribute 'noXsd': The attribute 'noXsd' is not allowed. [line 435 of /home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php] [PHP Error] DOMDocument::schemaValidate(): Element 'column', attribute 'autoincrement': The attribute 'autoincrement' is not allowed. [line 435 of /home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php] [PHP Error] DOMDocument::schemaValidate(): Element 'column', attribute 'autoincrement': The attribute 'autoincrement' is not allowed. [line 435 of /home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php] Execution of target "sql-template" failed for the following reason: /home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/build-propel.xml:187:1: XML schema file (/home/ragnarok/public_html/alba/alba/config/generated-schema-transformed.xml) does not validate. See warnings above for reasons validation failed (make sure error_reporting is set to show E_WARNING if you don't see any). [phingcall] /home/ragnarok/public_html/alba/dist/symfony-1.0.7/lib/vendor/propel-generator/build-propel.xml:187:1: XML schema file (/home/ragnarok/public_html/alba/alba/config/generated-schema-transformed.xml) does not validate. See warnings above for reasons validation failed (make sure error_reporting is set to show E_WARNING if you don't see any). BUILD FINISHED Total time: 0.3486 seconds
file- /home/ragnarok/public_html/alba/alba/config/generated-schema.xml ragnarok@ntbkragnarok:~/public_html/alba/alba$
Los errores del dom no los puedo arreglar supongo que debo poder poner algun attributo en el yml que se pase al xml. Pero parece que el parser yml->xml es un poco mimoso. Tampoco encuentro la forma de hacer desde el propel.ini que el SET FOREIGN_KEY_CHECKS no lo deje en 0 por defecto. De todas formas creo que no se podría porque el dump al tener el orden: DELETE tabla CREATE tabla DELETE tablaRelacion CREATE tablaRelacion Es imposible poder tenerlo en el orden de creación correcto con las tablas relaciones es como el huevo y la gallina (no puedo borrar la tabla porque tiene una referencia a la relacion, o no puedo borrar la tabla relacion porque es referencia x la tabla principal) Deberia terner todos los deletes juntos en orden y luego todos los creates, pero lamentablemente no veo la forma de que se cree asi desde el symfony. DELETE tabla1 DELETE tabla2 DELETE tablaNN CREATE tabla1 CREATE tabla2 CREATE tablaNN Supongo que todo el mundo termina dejando el FOREIGN_KEY_CHECKS en 0 como lo veniamos manejando hasta ahora, pero la idea es mejorar esta parte =( Alguna sugerencia de como lo hacen uds.? Toda esta discusión se nos presento porque estamos haciendo que el sistema funcione con mysql y pg al mismo tiempo y sin tener versiones de schemas o fixtures de datos x separado. Saludos! -- Dock Sud BBS http://www.docksud.com.ar telnet://bbs.docksud.com.ar
participants (1)
-
Fernando Toledo