Всем привет. Проект на Symfony 3 и PostgreSQL. При выполнении миграции способом:
doctrine:migrations:diff
doctrine:migrations:migrate
Создается миграция и выполняется. Все ок.
Но если в Entity указать схему - @ORM\Table(name="public.user")
. То при последующих миграциях (я про использование diff) моя модель User будет добавляться в миграцию как будто бы нет такой таблицы в бд.
Я так понимаю diff не видит схему "public" в бд.
Ребята, в какую сторону копать? Перегуглил уже наверное все что можно и нельзя. Спасибо!
Имя схемы необходимо указывать отдельным атрибутом 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
. В комментариях к этому багу я описал обходной способ решения.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
мне нужно составить таблицу с заказчикаи по IP и проверять есть ли уже в таблице такой IP Если есть то ничего не делать если нет то добавить...
Я начал изучать Jquery, и у меня появилась проблемаПосле получения ответа с content
Я читаю директорию с файлами через scandir, в ней находятся файлы, в названии которых содержаться иероглифыИ я не могу их прочитать через функцию...