长名称的MySQLdb调用过程

bxfogqkk  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(54)

在callproc的文档中,它使用前面加下划线、后面加下划线和参数位置的过程名。当调用一个长名称的存储过程时,这会导致3061错误User variable name '_extremely_super_duper_long_procedure_name_gets_used_here_0' is illegal。在这种特定情况下,生成的名称长度为65个字符(我相信最大长度为64 for user-defined variables)。
我正在寻找一种解决方法来解决这个问题,这种方法不需要重命名数据库中的所有存储过程。我正在处理一个一次性的项目来进行复杂的数据迁移,因此修改和重新测试一堆生产存储过程以及调用它们的所有应用程序不是一种选择。

mbjcgjjk

mbjcgjjk1#

很抱歉,您必须重命名此过程。MySQL在大多数情况下不支持长度超过64个字符的标识符。阅读https://dev.mysql.com/doc/refman/8.0/en/identifier-length.html
长度限制是硬编码的:

#define NAME_CHAR_LEN 64 /**< Field/table name length */

字符串
没有解决方法,除非您擅长重构MySQL的源代码。

相关问题