昊鼎王五:解决mysql导入function函数失败问题的方法

#昊鼎王五:解决mysql导入function函数失败问题的方法

#引子
有时候在WEB界面上操作,会报如下错:

nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: FUNCTION haoding205_op.function_xyzInfo does not exist

#排查
上面的意思是function函数没有找到,我明明是导入了数据库的啊,为什么没有呢?
再去查看导入日志:
原来是在创建存储过程时就出错了,信息如下:

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled

#原因定位
这是我们的主从MYSQL开启了bin-log(二进制LOG), 函数面临着如下选项

DETERMINISTIC     不确定的
NO SQL            没有SQl语句,当然也不会修改数据
READS SQL DATA    只是读取数据,当然也不会修改数据
MODIFIES SQL DATA 要修改数据
CONTAINS SQL      包含了SQL语句

#解决方法
##1.快速生效法
其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。
解决方法:

mysql -uroot -p
mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF   |
+---------------------------------+-------+
mysql> set global log_bin_trust_function_creators=1;
mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | ON    |
+---------------------------------+-------+

将该参数修改成ON之后,导入function函数就不会报上述的错误了。

##2.冷生效法
在第一种方法修改了参数以后,如果mysqld重启,这个参数又会消失。为了使其不受重启影响,我们在/etc/my.cnf配置文件中
添加:

log_bin_trust_function_creators=1

/etc/my.cnf添加了如上的参数之后,重启之后就生效。然后再次导入function函数也不会报错了。

好了,聪明如你,解决function函数导入失败的问题的方法就写到这里了。
解决了阻挡导入的前的报错,下一篇讲如何更快更好的导出和导入function函数或MYSQL全库。

还有其他问题的可以在评论区留言或者如下联系方式扫码向我提问。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值