mysql 创建函数 权限,没有超级权限就无法创建简单的MySQL函数

I've been creating stored procedures without problems but when trying to create a simple function which returns the result of a COUNT() function on a table, I get:

ERROR 1418: This function has none of DETERMINISTIC, NO SQL, or READS

SQL DATA in its declaration and binary logging is enabled (you might

want to use the less safe log_bin_trust_function_creators variable)

Since it's using COUNT() I change it to be READS SQL DATA but then get the error:

ERROR 1419: You do not have the SUPER privilege and binary logging is

enabled (you might want to use the less safe

log_bin_trust_function_creators variable)

I don't understand why I can create procedures but not functions. The logging is not something I really have access to, even if I understood what the problem was in that area... a little Googling suggests it's to do with DB replication or something but this is a simple DB only.

解决方案

The binlog is also used when rolling forward a database restored from backup. It's built in as standard.

If you execute your function at different times it will return different values depending on how many rows it has counted. And the point of binlogging is to get your system from one known state to another known state. When your statement is replayed will affect the outcome. The solution is to switch off binlogging if your not relying on it, or to allow the DBMS to write the data changes to the binlog instead of the statements used to change the data.

It's all in the manual.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值