Я выяснил, в чем проблема. Для контекста я на Mac OS X и lower_case_table_names
установлен на 2
.
Смешанный чехол в DDL
Как вы можете видеть в опубликованном мною DDL, case_id
в нижнем регистре, но определяется в таблице как Case_ID
. MySQL не беспокоится об этой разнице, но это приводит к сбою кода обратного проектирования и генерации моделей Propel, поскольку он не может найти внешний ключ в определении таблицы.
Что меня здесь застряло, так это то, что даже если бы я вручную изменил DDL, чтобы он соответствовал регистру, несмотря ни на что, MySQL все равно будет генерировать DDL с строчной версией, если я воспользуюсь командой SHOW CREATE TABLE Cases;
.
MySQL версии
Кажется, MySQL 8.x - версия, которую я использовал в разработке - демонстрирует это странное поведение. На данный момент это кажется мне ошибкой.
Я закончил с понижения до 5,7 и заново создал свою базу данных. MySQL 5.7 сохраняет регистр DDL, который вы предоставляете. Это, в свою очередь, позволяет Propel делать свое дело и успешно обновлять схему, а также генерировать модели.
Если кто-нибудь знает, почему две версии MySQL ведут себя по-разному, я хотел бы услышать, почему.
Эта проблема теперь решена с моей стороны. (хотя мне нужно будет изучить его снова, если и когда мы обновимся до 8.x)