Миграции Symfony 3. (PostgreSQL). Проблема с diff

392
02 сентября 2017, 00:23

Всем привет. Проект на Symfony 3 и PostgreSQL. При выполнении миграции способом:

  1. doctrine:migrations:diff
  2. doctrine:migrations:migrate

Создается миграция и выполняется. Все ок. Но если в Entity указать схему - @ORM\Table(name="public.user"). То при последующих миграциях (я про использование diff) моя модель User будет добавляться в миграцию как будто бы нет такой таблицы в бд. Я так понимаю diff не видит схему "public" в бд.

Ребята, в какую сторону копать? Перегуглил уже наверное все что можно и нельзя. Спасибо!

Answer 1

Имя схемы необходимо указывать отдельным атрибутом schema, доступен с версии doctrine 2.5, но для symfony 3 это ограничение помнится уже не проблема в любом раскладе.

Т.е. вот так:

@ORM\Table(name="user", schema="public")

Для схемы public обычно можно явно и не указывать. Но зависит от настройки пользователя в базе search_path.

А вот поскольку user - слово зарезервированное, то, оказывается, доктрине это ещё специально надо объяснить с помощью специальных кавычек:

@ORM\Table(name="`user`")

Так по крайней мере утверждает документация. Теперь в запросах тоже должны экранироваться имена. Возможно это diff'у до кучи и не нравится.

PS: в migrations:diff для postgresql есть неприятный уже не первый год открытый баг, когда всегда вместо сообщения что ничего не изменено генерируется пустая миграция up и попытка создать схему public в down. В комментариях к этому багу я описал обходной способ решения.

READ ALSO
Добавление записи в таблицу только если ячейки с таким значением еще нет в таблице

Добавление записи в таблицу только если ячейки с таким значением еще нет в таблице

мне нужно составить таблицу с заказчикаи по IP и проверять есть ли уже в таблице такой IP Если есть то ничего не делать если нет то добавить...

308
Помогите найти ошибку в Jquery!

Помогите найти ошибку в Jquery!

Я начал изучать Jquery, и у меня появилась проблемаПосле получения ответа с content

311
Не читаются файлы, в названии которых иероглифы. PHP

Не читаются файлы, в названии которых иероглифы. PHP

Я читаю директорию с файлами через scandir, в ней находятся файлы, в названии которых содержаться иероглифыИ я не могу их прочитать через функцию...

264
Mixed Content. При отправке формы

Mixed Content. При отправке формы

При отправке формы, в консоль выводит ошибку:

356