MySQL 说我创建的函数的参数计数不正确,即使它是正确的

Gio*_*los 5 mysql mysql-5.5 mysql-5.7

我正在将我的 web 应用程序从本地迁移到 DigitalOcean,并且在使用我创建的例程时遇到了问题。它在本地运行良好(版本 5.5.50)但在在线 MySQL(版本 5.7.13)上它给了我以下错误:

#1582-调用本机函数“DISTANCE”时的参数计数不正确

即使电话是正确的。

我已经删除了该函数,但它仍然给我同样的错误,因此我认为它甚至无法找到我的函数。

我试图将所有权限授予我的用户,但它仍然无法正常工作。

Der*_*ney 5

问题是distance()在 MySQL 5.7.5 中添加了一个原生函数,它带有2 个参数:

Distance() 是在 MySQL 5.7.5 中添加的。

Distance() 自 MySQL 5.7.6 起已弃用,并将在未来的 MySQL 版本中删除。请改用 ST_Distance()。

它将在以后的版本中删除,但不幸的是您需要重命名您的函数。如果您没有删除它,您可以更改应用程序中的函数调用以包含架构:

上述函数名解析规则对升级到实现新内置函数的 MySQL 版本有影响:

  • 如果您已经创建了一个具有给定名称的用户定义函数,并将 MySQL 升级到实现同名新内置函数的版本,则 UDF 将无法访问。要更正此问题,请使用 DROP FUNCTION 删除 UDF 并使用 CREATE FUNCTION 使用不同的非冲突名称重新创建 UDF。然后修改任何受影响的代码以使用新名称。

  • 如果新版本的 MySQL 实现了与现有存储函数同名的内置函数,您有两种选择:重命名存储函数以使用不冲突的名称,或更改对该函数的调用,使其使用模式限定符(即,使用 schema_name.func_name() 语法)。在任一情况下,相应地修改任何受影响的代码。

[来源]