MySQL 5.1 で Symfony 1.4 と Propel 1.6 を使用しています。
少し変更を加えるたびにschema.xml
(たとえば、1 つのテーブルに 1 つのフィールドを追加する)、次のように実行します。
php symfony propel:build-all --classes-only --env=dev
php symfony propel:diff --env=dev
php symfony propel:up --env=dev
alter table change
2 番目のステップでは、タスクは常に、typeフィールドfieldのすべてのテーブル内のすべてのフィールドの SQL 文を生成する
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 のフィールドの属性を正しく読み取らず、変更されたものとして処理しているようです。生成されたすべてのスクリプトをスキャンして、それが希望どおりであることを確認する必要があるため、非常に面倒です。これに対する回避策はありますか?