Symfony 3.4,FOSUserBundle:使用postgresql的SQL错误

Sal*_*ssa 3 php postgresql symfony fosuserbundle

我有一个普通的User类,当我使用MySQL时,只有id属性才能正常工作.自从我改为Postgresql后,我开始遇到很多问题.

让我首先概述一下我的应用程序,它是一个网络上的GIS,我放了一个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", "admin@ferrybox.tk", "admin@ferrybox.tk", 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...
                  ^
Run Code Online (Sandbox Code Playgroud)

对于法语句子很抱歉它在<< 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...
^
Run Code Online (Sandbox Code Playgroud)

即使我试图手动输入用户到数据库,但当我尝试登录时:

Authentication request could not be processed due to a system problem.
Run Code Online (Sandbox Code Playgroud)

我不知道我做的其他实体是否正在工作,因为我无法进入管理面板使用它们.

<?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()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

ThemeUser是我正在使用的管理包的接口,我只是将其实现为拥有捆绑功能.当我使用MySQL时,它没有任何问题.我甚至没有填写方法,因为我不需要它们.

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)
Run Code Online (Sandbox Code Playgroud)

Iwa*_*aya 8

"user"是postgreSQL中的保留关键字,您应该将表名更改为其他名称,或添加"`"(反引号)符号

`user`
Run Code Online (Sandbox Code Playgroud)

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

  • 在实体中将`@ORM\Table(name ="user")`更改为`@ORM\Table(name ="\`user \`")` (3认同)