【问题标题】:Can't create simple MySQL function without super privilege没有超级权限无法创建简单的 MySQL 函数
【发布时间】:2012-11-18 03:07:34
【问题描述】:

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

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

由于它使用的是COUNT(),我将其更改为READS SQL DATA,但随后出现错误:

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

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

    在前滚从备份恢复的数据库时也使用二进制日志。它作为标准内置。

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

    一切尽在the manual

    【讨论】:

    • 那么为什么程序的处理方式不一样,OUTparams 肯定会遇到同样的问题?
    • 因为不能在 INSERT/UPDATE/REPLACE 语句中调用过程
    猜你喜欢
    • 1970-01-01
    • 2014-08-09
    • 2012-07-21
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多