Използвам 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
fieldfield
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 и ги третира като променени. Много е досадно, защото трябва да сканирам целия генериран скрипт, за да проверя дали е това, което искам да бъде. Има ли решение за това?