Доктрина продолжает пытаться воссоздать существующую таблицу

Я использую доктрину с базой данных postgres вместе с FOSUserBundle. Почему-то каждый раз, когда я пытаюсь запустить doctrine:schema:update, он пытается создать пользовательскую таблицу, даже если она уже существует.

Мне пришлось установить схему для пользовательской таблицы как общедоступную в сущности, потому что в противном случае FOS выдаст ошибку об отсутствующей схеме. Удаление этой аннотации от объекта остановит его от попытки воссоздать таблицу как бы то ни было.

Сущность определяется следующим образом:

<?php

namespace AppBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Table(name="user", schema="public")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
*/
class User extends BaseUser {
...
}

и запрос, который доктрина продолжает пытаться выполнить с schema="public" На объекте установлено:

CREATE SEQUENCE public.user_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
CREATE TABLE public."user" (id INT NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled BOOLEAN NOT NULL, salt VARCHAR(255) DEFAULT NULL, password VARCHAR(255) NOT NULL, last_login TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL, password_requested_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, roles TEXT NOT NULL, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, PRIMARY KEY(id));
CREATE UNIQUE INDEX UNIQ_327C5DE792FC23A8 ON public."user" (username_canonical);
CREATE UNIQUE INDEX UNIQ_327C5DE7A0D96FBF ON public."user" (email_canonical);
CREATE UNIQUE INDEX UNIQ_327C5DE7C05FB297 ON public."user" (confirmation_token);

Если я добавлю schema="public" теги к любому из моих других объектов, они демонстрируют то же поведение, но без него работают нормально. Это просто сущность User, которая не работает с FOSUserBundle со следующим сообщением при попытке создать пользователя, например:

SQLSTATE[42703]: Undefined column: 7 ERROR: column t0.username does not exist
LINE 1: SELECT t0.username AS username_1, t0.username_canonical AS u...

0

Решение

С проверкой документации можно ознакомиться …

пользователь является зарезервированным ключевым словом в стандарте SQL. Если вам нужно использовать
зарезервированные слова, окружите их кавычками, например
@ORM \ Table (имя = «` user`»)

Может ли это быть вашей проблемой?

https://symfony.com/doc/master/bundles/FOSUserBundle/index.html#a-doctrine-orm-user-class

1

Другие решения

Это ошибка в Doctrine при использовании с Postgres. У меня эта проблема с миграциями все время. Я просто удаляю оскорбительную строку и все хорошо. @Enumus верен, и вы должны поставить галочку в аннотации.

/**
* User
*
* @ORM\Table(name="
пользователь")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
*
*/

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector