没有超级特权,无法创建简单的MySQL功能

时间:2012-11-29 22:33:57

标签: mysql

我一直在创建存储过程没有问题,但是当我尝试创建一个简单的函数,它返回一个COUNT()函数的结果时,我得到:

  

错误1418:此函数没有DETERMINISTIC,NO SQL或READS   声明和二进制日志记录中的SQL DATA已启用(您可能   想要使用安全性较低的log_bin_trust_function_creators变量)

由于它正在使用COUNT()我将其更改为READS SQL DATA,但后来收到错误:

  

错误1419:您没有SUPER权限和二进制日志记录   已启用(可能想要使用不太安全的用户   log_bin_trust_function_creators变量)

我不明白为什么我可以创建程序而不是函数。记录不是我真正可以访问的东西,即使我理解了该区域的问题......一点点谷歌搜索表明它与数据库复制有关,但这只是一个简单的数据库。

1 个答案:

答案 0 :(得分:2)

在向前滚动从备份还原的数据库时,也会使用binlog。它是标准内置的。

如果您在不同的时间执行您的功能,它将返回不同的值,具体取决于它计算的行数。 binlogging的目的是让你的系统从一个已知状态到另一个已知状态。重播您的陈述会影响结果。解决方案是在不依赖binlogging时关闭binlogging,或者允许DBMS将数据更改写入binlog而不是用于更改数据的语句。

全部都在the manual