我将 Symfony 1.4 和 Propel 1.6 与 MySQL 5.1 一起使用。
每次我对schema.xml
(例如在一个表中添加一个字段)进行一些小的更改时,我都会执行:
php symfony propel:build-all --classes-only --env=dev
php symfony propel:diff --env=dev
php symfony propel:up --env=dev
在第二步中,任务总是为字段字段类型的所有表中的所有字段生成 SQL 语句,alter table change
或者删除
integer not null
/创建完全没有变化的约束:
ALTER TABLE `pedido_linea` CHANGE `id` `id` INTEGER(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `product` CHANGE `norma_id` `norma_id` INTEGER(11);
...
ALTER TABLE `pedido_linea` DROP FOREIGN KEY `pedido_linea_FK_2`;
ALTER TABLE `pedido_linea` ADD CONSTRAINT `pedido_linea_FK_2`
FOREIGN KEY (`product_id`)
REFERENCES `product` (`id`)
ON UPDATE RESTRICT
ON DELETE RESTRICT;
似乎 Propel 没有正确读取 MySQL 的字段属性并将它们视为已更改。这很烦人,因为我必须扫描所有生成的脚本以检查它是否是我想要的。有解决方法吗?