gpt4 book ai didi

mysql - CakePHP 3.0 : Mysql Syntax Error caused by a class named Group

转载 作者:行者123 更新时间:2023-11-29 07:32:55 26 4
gpt4 key购买 nike

我刚刚创建了一个名为group 的表,并生成了引用该表的骨架文件。

我意识到这个名称输入与 MySQL 保留字冲突,因为 cakephp3.0 生成这样的查询:

SELECT 
Group.group_id AS `Group__group_id`,
Group.name AS `Group__name`,
Group.created_at AS `Group__created_at`
FROM
group Group
LIMIT
20 OFFSET 0

抛出这个错误:

 Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You 
have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'group Group
LIMIT 20 OFFSET 0' at line 1

有没有办法避免这种错误?

最佳答案

事实上,您可以启用 quoteItendifiers,但如上面的评论所述,这会带来性能损失。

我使用不同的解决方案来解决这个问题,通过为有问题的 db_table 自定义 Table 类,如下所示:

注意表别名被重命名,还有我手动转义的表名

class GroupTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config); // TODO: Change the autogenerated stub
$this->setAlias('MyGroup');
$this->setTable("`group`");
}

}

这将生成如下所示的查询:

SELECT   MyGroup.id AS `MyGroup__id`,   MyGroup.filed1 AS `MyGroup__filed1` FROM    `group` MyGroup

使用 CakePHP 3.6 $Group->find()->all() 成功运行。

关于mysql - CakePHP 3.0 : Mysql Syntax Error caused by a class named Group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50340659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com