在准备要在数据库中查询的简单语句时出现错误。这是一个非常简单的过程。据说功能max()
不存在。这是一个简单的查询:
SELECT coalesce ( max ( p_order ), 0 ) + 1 AS new FROM pages
它没有要绑定的参数(但是我使用自己的类来管理我的查询,因此始终使用准备好的语句)。
在准备语句时,我从数据库中收到以下错误:“ FUNCTION fa_cms.max不存在。请查阅《参考手册》中的“函数名称解析和解析”部分。代码是1630。
我可以直接在数据库(MariaDB 10.1.29)上执行此查询,而不会出现任何问题-因为表仍然为空,因此得到“ 1”。
但是当我通过自己的PHP类调用此语句时,会出现此错误。所有其他语句的准备和执行没有任何问题-带有或不带有参数。
max()
聚合函数有什么特别之处吗?
答案 0 :(得分:1)
问题是max
和(
之间的空格。来自documentation:
默认情况下,函数名称和其后的括号之间必须没有空格。这有助于MySQL解析器区分函数调用和对与函数名称相同的表或列的引用。
不过,该要求似乎并没有得到一致实施。似乎只有在使用聚合函数时才真正重要。
因此将您的查询更改为:
SELECT coalesce(max(p_order), 0) + 1 AS new FROM pages