Я работаю над переносом существующего проекта Symfony 2.8
на Symfony 3.4
. Кроме Symfony я обновил и некоторые другие компоненты, например Doctrine:
Symfony 2.8 Symfony 3.4
------------------------------------------------------------------------
symfony/symfony v2.8.49 v3.4.21
doctrine/annotations v1.6.0
doctrine/cache v1.8.0
doctrine/collections v1.5.0
doctrine/common v2.8.1 v2.10.0
doctrine/dbal v2.6.3 v2.9.2
doctrine/doctrine-bundle 1.10.0
doctrine/doctrine-cache-bundle 1.3.5
doctrine/event-manager v1.0.0
doctrine/inflector v1.3.0
doctrine/instantiator 1.1.0
doctrine/lexer v1.0.1
doctrine/orm v2.5.14 v2.6.3
doctrine/persistence v1.1.0
doctrine/reflection v1.0.0
На некоторых объектах я использую GUID
в качестве первичного ключа:
class SomeEntity {
/**
* @ORM\Id
* @ORM\Column(name="guid", type="guid", unique=true)
*/
protected $guid;
...
}
БД, созданная с помощью проекта SF 2.8, использует ограничения PRIMARY
и UNIQUE
для этих полей. Однако при запуске обновления БД с помощью SF 3.4 доктрина хочет снять ограничения UNIQUE
:
bin/console doctrine:schema:update --dump-sql
The following SQL statements will be executed:
DROP INDEX UNIQ_D3D1CD162B6FCFB2 ON some_enitiy;
Это правильно?
Поскольку поля все еще определены как PRIMARY
, они все равно должны быть уникальными, и я предполагаю, что будет сохранено удаление свойства UNIQUE
. Но можно ли это сделать?
Является ли обновленная версия Doctrine более умной и минимизирует избыточное определение только от PRIMARY
и UNIQUE
до PRIMARY
, или есть какая-то другая причина для такого поведения?