Mysql创建Function报1418错误

今天在本地创建了一个自定义函数用来生成随机数做列主键,本地测试成功后放到生产环境后,一直报错。
仔细查看报错信息:
错误代码:1418

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging


看到binary logging感觉很奇怪,创建函数和二进制日志文件有什么关系,查询资料后发现,原来是因为生产环境使用了
两台数据库服务器进行主从复制备份。binary log进行同步时需要知道函数创建的语句是什么类型,否则可能造成同步数据不一致现象。
所以需要在RETURNS TYPE后面,BEGIN前面加上创建类型。
如RETURN VARCHAR(10) 
  DETERMINISTIC
一般有下面这几种类型:
1)DETERMINISTIC:不确定的
2)NO SQL:没有SQL语句
3)READS SQL DATA:读取数据,不涉及修改数据
4)MODIFIES SQL DATA:涉及到修改数据
5)CONTAINS SQL:包含了SQL语句
可以根据需要选择合适的类型
这种设置方法在数据库服务重启后会失效,如果想要数据库重启仍能生效,可以在my.conf文件的[mysqld]后面加上
log_bin_trust_routine_creators=1;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值