0

我在使用 MySQL 连接器/Python 调用名称被反引号包围的存储过程时遇到问题。使用该cursor.callproc()方法执行此操作时出现以下语法错误:

mysql.connector.errors.ProgrammingError: 1064 (42000): 你有一个错误
你的 SQL 语法;检查与您的 MySQL 服务器版本相对应的手册
在第 1 行的 '`insert_page`_args1=NULL' 附近使用正确的语法

这是我的存储过程调用,导致错误:

args = (None, 'foo', 'bar')
cursor.callproc('`sp_insert_page`', args)

我已经看到了各种示例,这些示例演示了使用带有扩展字符串格式的游标来转义会评估为不正确 MySQL 语法的字符串,但这似乎不适用于 callproc() 方法;无论格式化方法如何,我都会收到上述语法错误。

从 MySQL 命令行客户端调用名称包含反引号的存储过程可以正常工作,因此问题必须出在 python 应用程序的某个地方。

我希望有人能够阐明这个问题。

4

1 回答 1

2

MySQL 邮件列表上的 Johan de Meersman 指出,反引号是 MySQL 分隔符,实际上并不是名称的一部分,因此不应将它们包含在调用中。

我本可以发誓我曾尝试在没有反引号的情况下调用该过程,但事实证明这是错误。

于 2016-05-09T10:02:31.920 回答