【问题标题】:STORED PROCEDURE does not exist存储过程不存在
【发布时间】:2011-11-16 05:47:06
【问题描述】:

我从 mysql 客户端创建存储过程,一切正常。 但是当我尝试调用它时,我会收到以下错误消息:

错误 1305 (42000):PROCEDURE XXX 不存在

之后我尝试在没有

的情况下再次创建它

如果存在则删除程序

声明,我明白了:

错误 1304 (42000):PROCEDURE XXX 已存在

怎么了?

*问题是我的数据库在名称中有点 (.) *

*示例:'site.db' -> 这是错误的数据库名称,MYSQL 找不到过程!!!*

【问题讨论】:

  • 由于您没有显示用于调用该过程的实际代码或用于删除它的代码,因此很难有人提供帮助。
  • 你不能拼写“XXX”。这是我的猜测,直到您向我们展示一些实际代码:)
  • 您是否有像 SQL Developer 或 Toad 这样的客户端来确保存储过程在您调用创建它后退出。您是使用文件中的脚本来执行逻辑还是直接输入 sql 命令。在解决此问题之前,我们提供了更多细节。如果您使用的是脚本文件,那么您的架构所有者是否与我拥有的访问权限相同。
  • 你有没有让它工作?我尝试用反引号转义我的数据库名称,但它仍然说该过程不存在。
  • 事实证明,这是我(旧)版本的 MySql 的问题:bugs.mysql.com/bug.php?id=61078 我们要么升级版本(首选),要么重命名数据库,这取决于我们的感觉是一个较小的痛苦。

标签: mysql stored-procedures


【解决方案1】:

在错误升级或类似情况后,您的系统数据库可能存在一致性问题。 结果是什么

select * from information_schema.ROUTINES where routine_name = 'xxx'

【讨论】:

  • 我的查询是空的。 :(
【解决方案2】:

当您使用 mysql 客户端定义程序时,
您可以使用 root 用户(或用户 A)。

您可能正在使用其他用户来调用存储过程,
比方说用户B,它可能会导致权限上的一些差异

如果是这种情况,您可以授予访问权限
要查看当前权限,可以使用此命令

show procedure status;

【讨论】:

  • @Faraona 对于这两种情况?请包括您的存储过程,这可能是谎言的问题
猜你喜欢
  • 1970-01-01
  • 2013-07-09
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 2013-11-23
  • 2010-09-15
相关资源
最近更新 更多