Symfony2 抛出学说异常“检查与您的 MySQL 服务器版本相对应的手册,以获取在 'group' 附近使用的正确语法”
Posted
技术标签:
【中文标题】Symfony2 抛出学说异常“检查与您的 MySQL 服务器版本相对应的手册,以获取在 \'group\' 附近使用的正确语法”【英文标题】:Symfony2 throws doctrine exception "check the manual that corresponds to your MySQL server version for the right syntax to use near 'group' "Symfony2 抛出学说异常“检查与您的 MySQL 服务器版本相对应的手册,以获取在 'group' 附近使用的正确语法” 【发布时间】:2013-11-24 09:16:56 【问题描述】:我正在做一个 symfony 项目,我尝试使用实体向数据库添加数据,但我得到了一个 Doctrine sql 错误?!!!! 所以任何帮助都是高级的
我自己做了一个实体:
/**
* @ORM\Table(name="u001_user_group")
* @ORM\Entity
*/
class UserGroup
/**
* @var integer
*
* @ORM\Column(name="group", type="integer", length=20, nullable=false)
*/
private $group;
public function setGroup($group)
$this->group = $group;
return $this;
public function getGroup()
return $this->group;
当我尝试添加这样的内容时:
$UserGroup= new UserGroup();
$UserGroup->setUser($registerAction->getId());
$UserGroup->setGroup(4);
$em->persist($UserGroup);
$em->flush();
它给了我这个错误:
执行 'INSERT INTO u001_user_group 时发生异常 (user, group) VALUES (?, ?)' with params [20, 4]:
SQLSTATE[42000]:语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 mysql 服务器版本,用于在 'group) VALUES 附近使用正确的语法 (20, 4)' 在第 1 行
【问题讨论】:
【参考方案1】:@nifr 说了什么。
补充一下,如果您绝对需要使用group
,您可以使用反引号来转义它,如下所示:
/**
* @var integer
*
* @ORM\Column(name="`group`", type="integer", length=20, nullable=false)
*/
private $group;
但一般来说,最好避免保留字。
【讨论】:
+1 很好的补充 - 我曾考虑在我的答案中包含反引号的解决方法,但我决定省略它以避免鼓励人们过度使用它并在之后遇到其他问题:) 哈哈是的,好点子!让这些 cmets 作为对未来读者的公平警告:)【参考方案2】:group
是 MySQL 中的 reserved keyword。
更改列名以解决此问题。
【讨论】:
以上是关于Symfony2 抛出学说异常“检查与您的 MySQL 服务器版本相对应的手册,以获取在 'group' 附近使用的正确语法”的主要内容,如果未能解决你的问题,请参考以下文章