Squeak.ru - шаблоны программирования

Схема обновления доктрины с последовательностью PostgreSQL по первичному ключу

Я пытаюсь обернуть модель Doctrine вокруг устаревшей таблицы базы данных в PostgreSQL, которая имеет:

    Column   |           Type           |                      Modifiers                       
 ------------+--------------------------+------------------------------------------------------
  id         | integer                  | not null default nextval('table_name_id_seq'::regclass)

Если я попробую сопоставление вроде:

/**
 * @ORM\Id
 * @ORM\Column(name="id", type="integer", unique=true)
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

Затем инструмент обновления схемы дает мне следующее:

 ALTER TABLE table_name ALTER id DROP DEFAULT;

Если я попытаюсь явно определить значение по умолчанию, например:

/**
 * @ORM\Id
 * @ORM\Column(name="id", type="integer", unique=true, options={"default"="nextval('table_name_id_seq'::regclass)"})
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

Тогда еще дает:

ALTER TABLE table_name ALTER id SET DEFAULT nextval('table_name_id_seq'::regclass);
ALTER TABLE table_name ALTER id DROP DEFAULT;

И, наконец, если я попытаюсь указать последовательность вручную:

/**
 * @ORM\Id
 * @ORM\Column(name="id", type="integer", unique=true)
 * @ORM\GeneratedValue(strategy="SEQUENCE")
 * @ORM\SequenceGenerator(sequenceName="table_name_id_seq", initialValue=1, allocationSize=1)
 */
private $id;

Я все еще получаю DROP DEFAULT:

ALTER TABLE table_name ALTER id DROP DEFAULT;

Есть ли способ решения этой проблемы, который по-прежнему позволяет использовать инструмент обновления схемы? Мне не удалось найти ошибку Doctrine, связанную с этим, но, возможно, я что-то пропустил. Это последняя версия Doctrine 2.4.X, работающая под управлением Symfony 2.5.2.


Ответы:


1

пытаться

* @ORM\GeneratedValue(strategy="IDENTITY")

28.10.2014
  • Это действительно то, что решило эту проблему для нас (я подробно обсуждал это в этом PR: github.com/ doctrine / dbal / pull / 669). Хотя в документации предполагается (ред?), Что выбор AUTO приведет к SERIAL реализации PostgreSQL, оказывается, что вместо этого он отображается на SEQUENCE. Так что правильный выбор, конечно же, IDENTITIY. Мне кажется, что это снижает переносимость между механизмами хранения, но, тем не менее, было удовлетворительным решением. 07.09.2015
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...