у меня при каждом дифе генерируется следующие строки в миграции
$this->addSql('ALTER TABLE files ALTER author_id TYPE UUID');
$this->addSql('ALTER TABLE files ALTER author_id DROP DEFAULT');
вот таким вот образом оформлено поле
/**
* @ORM\Embedded(class="AuthorId", columnPrefix=false)
*/
AuthorId
/**
* @ORM\Column(type="guid", name="author_id")
*/
кто-то знает как решить ? гуглил, такая проблема раньше была у Ramsey::Uuid и она решается
не хотелось бы сейчас на него переходить
база постгрес
тебя смущает то, что TYPE UUID, а не GUID ?
Вероятно у вас postgres, который оправданно хочет хранить uuid как специальный постгресовый тип данных uuid. А у вас колонка с типом "строка". Если есть возможность исправить тип и хранить uuid как uuid вместо строки, то лучше так и сделать, т.к. под капотом тип uuid хранит данные в бинарном виде, 16 байт. Строка же будет весить гораздо больше. А с учетом того, что по id юзера скорее всего будет индекс, да и просто экономичнее, то тут выборо очевиден. Если же вы поклонник хранить uuid как строки, то наверное нужно указать type="string" тогда
а где у меня там строка указана ?
та не, доктрина сохраняет типы uid в бинарники
В коде как раз указано правильно, uuid. Но в бд по всей видимости тип у колонки строка. Иначе почему дифф расхождение выдает
нет, в базе указано uuid
это видимол в mysql, и если так, то гуд. У mysql нет типа данных uuid, и там надо в binary хранить
ок, тогда не знаю, думал дифф дает из - за того, что в бд строка
в pg - toRfc4122, в mysql - toBinary
с другими типами uid не пробовал?
например ? у доктрины только один тип - guid
guid - обстрактный
да, у меня всё ок
благодарю
попробуй COMMENT ON COLUMN files.author_id IS '(DC2Type:guid)'
попробую, но сам дифф такого каменты не хочет ставить, что странно
потому что в классе этого типа скорее всего указано false на установке коммента
https://github.com/ramsey/uuid-doctrine/pull/100#discussion_r472946672 Я глубоко не разбирался, но diff у меня так себя вёл всегда когда комета на колонке не было
Обсуждают сегодня