【发布时间】:2023-03-04 08:32:01
【问题描述】:
我在 MySQL 5.1 上使用 Symfony 1.4 和 Propel 1.6。
每次我对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 changefieldfieldinteger not null 类型的所有表中的所有字段生成 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 的字段属性并将它们视为已更改。这很烦人,因为我必须扫描所有生成的脚本以检查它是否是我想要的。有解决办法吗?
【问题讨论】:
标签: symfony1 symfony-1.4 propel