Symfony1 spreep:diff任务为所有字段/表生成不必要的SQL语句

Symfony1 spreep:diff任务为所有字段/表生成不必要的SQL语句,symfony1,symfony-1.4,propel,Symfony1,Symfony 1.4,Propel,我正在使用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 在第二步中,任务始终为类型为alter table changefieldfieldinte

我正在使用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
在第二步中,任务始终为类型为
alter table change
field
field
integer not null
或drop/create的所有表中的所有字段生成SQL语句,这些约束根本没有更改:

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字段的属性,并将其视为已更改。这很烦人,因为我必须扫描所有生成的脚本,以检查它是否符合我的要求。有解决方法吗?

Mysql不为外键提供限制约束,因为这与没有操作或没有定义约束相同(请参阅)


删除更新时和删除时的行,您应该很好

这不是重点,因为它发生在所有约束上,如限制、设置NULL或级联。关键是,SPROPE解释了所有字段在完全不更改时都会更改: