当我在.net core 3.1应用程序中从MySQL Client 8.0.20升级到8.0.21时,我在尝试调用AWS Aurora中的存储过程时遇到了这个奇怪的错误。
MySql.Data.MySqlClient.MySqlException (0x80004005): same name are not supported.
at MySql.Data.MySqlClient.ProcedureCache.GetProcData(MySqlConnection connection, String spName)
at MySql.Data.MySqlClient.ProcedureCache.AddNew(MySqlConnection connection, String spName)
at MySql.Data.MySqlClient.ProcedureCache.GetProcedure(MySqlConnection conn, String spName, String cacheKey)
at MySql.Data.MySqlClient.StoredProcedure.CheckParameters(String spName)
at MySql.Data.MySqlClient.StoredProcedure.Resolve(Boolean preparing)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
在8.0.20(以及之前的几个版本(中,它工作时没有任何抱怨。我在InterTubes上找不到关于这个错误的任何信息。
程序(非常简单的搜索程序(:
CREATE DEFINER=`cdapoe`@`%` PROCEDURE `find_oeauthorizationassigned`(
IN p_username VARCHAR(120),
IN p_active_utc DATETIME
)
READS SQL DATA
select * from oeauthorization.oeauthorizationassigned
where username=p_username and (p_active_utc < expiration_utc or expiration_utc is null)
从MySQL Client 8.0.21降级到8.0.20是一个众所周知的好方法。
该错误已向Oracle报告并得到Oracle的确认。
Oracle发布了MySQL Client 8.0.22,似乎已经解决了这个问题。发行说明中没有提到我的错误报告,但还有另一个听起来类似的错误。所以也许它是偶然修复的。
MySQL已经关闭了我的错误报告,并声称它已在8.0.22中修复。我现在是8点23分,看起来很好。
当函数名与存储过程相同时,会出现此错误。重命名存储过程或函数将解决问题