【发布时间】:2018-04-02 04:04:35
【问题描述】:
当我使用 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...
^
很抱歉,它说的法语句子基本上是语法错误或 >
附近
这不是我遇到的唯一一个问题,在这种方式不起作用之后我尝试使用注册表:
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 是我正在使用的管理包的界面,我只是 实现它以具有捆绑功能。它没有任何 我使用 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)
【问题讨论】:
-
您在查询中插入 id。但是方案中的列 id 和实体中的 id 属性的定义是什么?
-
另一方面,您的选择查询说用户名列不存在。请提供实体和表格方案
-
亲爱的 Denis Alinav,我刚刚添加了类用户和表架构,我期待帮助,谢谢。
标签: php postgresql symfony fosuserbundle