Symfony 3.4, FOSUserBundle: ошибки SQL с postgresql

У меня обычный класс User с атрибутом только id работал очень хорошо, когда я использовал MySQL. С тех пор, как я перешел на Postgresql, у меня возникло много проблем.

Позвольте мне сначала дать вам обзор моего приложения, его ГИС в сети, я поместил файл TSV и с помощью созданного мной скрипта php он читает файл TSV и сохраняет свои данные в базе данных. Затем Geoserver считывает данные и передает их моей карте листовок. Так что Postgresql действительно важен, поскольку Geoserver не поддерживает MySQL.

Сначала я создал базу данных и ее схему с помощью инструмента командной строки. До сих пор все в порядке, но когда я попытался использовать командную строку для создания пользователя, он выдает синтаксическую ошибку SQLSTATE [42601]:

In AbstractPostgreSQLDriver.php line 70:

An exception occurred while executing 'INSERT INTO user (username, username_canonical, emai
  l, email_canonical, enabled, salt, password, last_login, confirmation_token, password_reque
  sted_at, roles, id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["admin", "adm
  in", "[email protected]", "[email protected]", 1, null, "$2y$13$rS4j9aDRRpKMA2ge3QoDNuhmCWD
  9cO9Cmnzv/PxqUmBxSximXcFZu", null, null, null, "a:0:{}", 1]:



 SQLSTATE[42601]: Syntax error: 7 ERREUR:  erreur de syntaxe sur ou près de « user »
  LINE 1: INSERT INTO user (username, username_canonical, email, email...
                      ^

In PDOStatement.php line 107:

  SQLSTATE[42601]: Syntax error: 7 ERREUR:  erreur de syntaxe sur ou près de « user »
  LINE 1: INSERT INTO user (username, username_canonical, email, email...
                  ^


In PDOStatement.php line 105:

  SQLSTATE[42601]: Syntax error: 7 ERREUR:  erreur de syntaxe sur ou près de « user »
  LINE 1: INSERT INTO user (username, username_canonical, email, email...
                  ^

Sorry about the french sentence it says basicly error of syntax on or near << user >>

Это не единственная проблема, которую я получил, после того, как этот способ не сработал, я попытался использовать форму регистрации:

An exception occurred while executing 'SELECT t0.username AS username_1, t0.username_canonical AS username_canonical_2, t0.email AS email_3, t0.email_canonical AS email_canonical_4, t0.enabled AS enabled_5, t0.salt AS salt_6, t0.password AS password_7, t0.last_login AS last_login_8, t0.confirmation_token AS confirmation_token_9, t0.password_requested_at AS password_requested_at_10, t0.roles AS roles_11, t0.id AS id_12 FROM user t0 WHERE t0.username_canonical = ?' with params ["user"]:

SQLSTATE[42703]: Undefined column: 7 ERREUR: la colonne t0.username n'existe pas
LINE 1: SELECT t0.username AS username_1, t0.username_canonical AS u...
^

Даже я пытался вручную ввести пользователя в базу данных, но когда я пытаюсь войти:

Authentication request could not be processed due to a system problem.

Я не знаю, работают ли другие созданные мной Сущности или нет, потому что я не могу войти в панель администратора, чтобы использовать их.

<?php
namespace AdminBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use SbS\AdminLTEBundle\Model\UserInterface as ThemeUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * Class User
 * @package AdminBundle\Entity
 * @ORM\Entity
 * @ORM\Table(name = "user")
 */
class User extends BaseUser implements ThemeUser
{
    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\Column(type = "integer")
     * @ORM\GeneratedValue(strategy = "AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Get Id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set Id
     *
     * @param int $id
     *
     * @return User
     */
    public function setId($id)
    {
        $this->id = $id;

        return $this;
    }

    /**
     * Should return FirstName and LastName
     * @return string
     */
    public function getName()
    {
    }

    /**
     * Should return path to avatar. See Twig User Extension.
     * @return string
     */
    public function getAvatar()
    {
    }

    /**
     * Should return Date of Registration
     * @return mixed
     */
    public function getMemberSince()
    {
    }

    /**
     * Should return Description (can be role, group or etc.)
     * @return string
     */
    public function getTitle()
    {
    }

    /**
     * Can return Additional Info
     * @return mixed
     */
    public function getInfo()
    {
    }
}

ThemeUser is an interface of an admin bundle that i am using, i just implemented it to have the bundle fonctionality. It didnt have any issue when i was using MySQL. I even didnt fill the methods cuz i dont need them.

Column                  Type                                  Comment
id                      integer  
username                varchar(180)     
username_canonical      varchar(180)     
email                   varchar(180)     
email_canonical         varchar(180)     
enabled                 boolean  
salt                    varchar(255) NULL    
password                varchar(255)     
last_login              timestamp(0) NULL    
confirmation_token      varchar(180) NULL  
password_requested_at   timestamp(0) NULL    
roles                   text                               (DC2Type:array)

вы вставляете идентификатор в запрос. но каково определение идентификатора столбца в схеме и свойства идентификатора в сущности?

Denis Alimov 02.04.2018 08:26

с другой стороны, ваш запрос выбора говорит, что столбец имени пользователя не существует. пожалуйста, предоставьте вам сущность и схему таблицы

Denis Alimov 02.04.2018 08:28

Уважаемый Денис Алинав, я только что добавил пользователя класса и схему таблицы, жду помощи, спасибо.

Salim Ben Aissa 02.04.2018 11:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
3
1 440
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

"user" - зарезервированное ключевое слово в postgreSQL, вам следует изменить имя своей таблицы на другое или добавить символ "` "(обратная кавычка)

`user`

https://www.postgresql.org/docs/current/static/sql-keywords-appendix.html

изменить @ORM\Table(name = "user") на @ORM\Table(name = "`user`") в сущности

Denis Alimov 02.04.2018 11:25

Сработало очень хорошо Спасибо большое! Все, что мне нужно было сделать, это изменить имя таблицы в аннотациях доктрины.

Salim Ben Aissa 02.04.2018 11:42

Да, все официальные документы и примеры используют сущность «Пользователь» с именем таблицы «пользователь», и, таким образом, любой, кто пытается реализовать официальный пример, столкнется с той же проблемой. Спасибо за публикацию исправления, но может быть хорошо, чтобы примеры Symfony не конфликтовали с пространством имен по умолчанию.

geerlingguy 16.01.2019 23:00

Также - это может быть причиной не использовать user в качестве имени таблицы. Были ли у вас проблемы с этим где-нибудь?

Slowwie 17.02.2021 03:35

Другие вопросы по теме