Error number: 4084; Symbol: ER_WARN_SF_UDF_NAME_COLLISION; SQLSTATE: HY000
Message: This function ‘%s’ has the same name as a loadable function (UDF). To invoke the stored function, it is necessary to qualify it with the schema name.
错误号 4084,错误符号ER_WARN_SF_UDF_NAME_COLLISION,SQLSTATE HY000。
错误说明
通常情况,MySQL服务器会阻止你添加与现有的存储函数同名的函数(User-Defined Function);但如果两个函数的名字仅仅在字母大小写上有区别,MySQL就会发出 ER_WARN_SF_UDF_NAME_COLLISION 错误,警告你忽略了大小写,因而没有完全避免函数命名冲突。
常见案例
MySQL服务器会把函数名视为区分大小写的,但有时我们可能会视为不区分大小写的函数,比如定义同名的两个函数,其中一个使用大小写,另一个不使用大小写,就会发生如下情况:
mysql> CREATE FUNCTION adder RETURNS INTEGER SONAME ‘adder.so’;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FUNCTION Adder RETURNS INTEGER SONAME ‘adder.so’;
ERROR 4084 (HY000): WARN_SF_UDF_NAME_COLLISION: Name collision for ‘Adder’
解决方法
这时MySQL将发出 ER_WARN_SF_UDF_NAME_COLLISION 错误,给出警告。
解决这个问题的最好办法是保证函数命令总是以相同大小写形式出现:
mysql> CREATE FUNCTION adder RETURNS INTEGER SONAME ‘adder.so’;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FUNCTION Adder RETURNS INTEGER SONAME ‘Adder.so’;
Query OK, 0 rows affected (0.00 sec)
这样MySQL就不会误将函数名字看作大小写形式不同的同名函数,从而避免函数名冲突。