我一直在毫无问题地创建存储过程,但是当尝试创建一个返回结果的简单函数时COUNT()
在桌子上运行函数,我得到:
错误 1418:此函数没有 DETERMINISTIC、NO SQL 或 READS
其声明中的 SQL DATA 和二进制日志记录已启用(您might想要使用不太安全的 log_bin_trust_function_creators 变量)
由于它正在使用COUNT()
我把它改成READS SQL DATA
但随后出现错误:
错误 1419:您没有 SUPER 权限,二进制日志记录是
启用(你might想用不太安全的
log_bin_trust_function_creators 变量)
我不明白为什么我可以创建过程但不能创建函数。日志记录不是我真正有权访问的东西,即使我了解该区域的问题是什么......一点谷歌搜索表明它与数据库复制或其他东西有关,但这只是一个简单的数据库。
前滚从备份恢复的数据库时也会使用二进制日志。它是标准内置的。
如果您在不同时间执行函数,它将返回不同的值,具体取决于它计算的行数。二进制日志的目的是让你的系统从一种已知状态进入另一种已知状态。你的发言何时重播将会影响结果。解决方案是关闭 binlogging(如果您不依赖它),或者允许 DBMS 将数据更改写入 binlog,而不是用于更改数据的语句。
一切都在手册 http://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)