Доктрина: Модели с наследованием column_aggregation дважды отображаются в SQL

#sql #inheritance #symfony1 #doctrine #column-aggregation

#sql #наследование #symfony1 #доктрина #агрегация столбцов

Вопрос:

Кто-нибудь заметил это?

Всякий раз, когда модель использует column_aggregation (наследование), схема.в sql есть 2 команды СОЗДАНИЯ ТАБЛИЦЫ, одна создает базовую таблицу, а другая (помимо полей) добавляет индекс в столбец наследования

 CREATE TABLE Prop (id INT AUTO_INCREMENT, opt_property_type SMALLINT UNSIGNED DEFAULT 251 NOT NULL, property_nature VARCHAR(255), INDEX opt_property_type_idx (opt_property_type), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;

CREATE TABLE Prop (id INT AUTO_INCREMENT, opt_property_type SMALLINT UNSIGNED DEFAULT 251 NOT NULL, property_nature VARCHAR(255), INDEX Prop_property_nature_idx (property_nature), INDEX opt_property_type_idx (opt_property_type), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
  

Обратите внимание на включение INDEX Prop_property_nature_idx (property_nature) во второе утверждение

Если кто-то еще сталкивается с этим, я зарегистрирую ошибку. Спасибо

Ответ №1:

Я только что сам с этим столкнулся. Похоже, что doctrine:build-sql это ошибка.

Одна из самых безумных вещей, которые я обнаружил во время расследования этого, заключается в том, что doctrine:insert-sql даже не использует schema.sql. Он динамически генерирует и запускает SQL на основе определений моделей.

Похоже, это известная ошибка, и она не будет исправлена в Doctrine 1: