错误:启用二进制日志记录的函数声明中缺少“DETERMINISTIC、NO SQL 或 READS SQL DATA”
导入数据库时MySQL,遇到错误“1418 (HY000):此函数在其声明中没有 DETERMINISTIC、NO SQL 或 READS SQL DATA,并且启用了二进制日志记录”表示有问题的函数缺少适当的声明。
解决方法:
有两种方法可以解决此问题:
执行 MySQL 控制台命令:
<code class="mysql">SET GLOBAL log_bin_trust_function_creators = 1;</code>
此命令放宽了对非确定性函数的检查,允许导入继续进行。
配置 mysql.ini:
添加将以下行添加到 mysql.ini 配置文件中:
log_bin_trust_function_creators = 1
说明:
二进制日志记录对数据库所做的所有修改。默认情况下,MySQL 要求修改数据的函数在其声明中声明为 DETERMINISTIC、NO SQL 或 READS SQL DATA,以确保它们可以准确复制。
存储函数的确定性声明:
这些声明告知 MySQL 函数的性质,指导优化和复制决策。
注意: 如果禁用二进制日志记录,则 log_bin_trust_function_creators 设置不适用。因此,确保指定适当的确定性声明至关重要。
通过实施提供的解决方案之一,您可以解决错误并继续数据库导入。
以上是为什么在启用二进制日志记录的情况下 MySQL 会抛出'DETERMINISTIC、NO SQL 或 READS SQL DATA”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!