MySQL 错误:“此函数在其声明中没有 DETERMINISTIC、NO SQL 或 READS SQL DATA,并且启用了二进制日志记录”
尝试将数据库导入 MySQL 时,可能会出现错误,指示函数在其声明中缺少以下声明之一:DETERMINISTIC、NO SQL 或 READS SQL DATA。激活二进制日志记录时会出现此错误。
解决错误:
可以通过两种方式解决此错误:
配置 MySQL 控制台: 在 MySQL 控制台中执行以下命令:
SET GLOBAL log_bin_trust_function_creators = 1;
编辑配置文件:添加以下行到 mysql.ini 配置文件:
log_bin_trust_function_creators = 1;
这些修改允许将非确定性函数与二进制日志记录一起使用。但是,如果禁用二进制日志记录,这些设置不会影响错误。
理解函数声明:
需要注意的是,包含非确定性指令的函数,例如 NOW() 或 UUID(),应声明为 NOT DETERMINISTIC。此外,从未复制模式读取数据的函数也是不确定的。
最佳实践:
理想的方法是理解和利用存储函数的确定性声明因为它们有助于复制优化。 MySQL 建议在存储函数的定义中显式指定上述声明之一,以避免潜在的错误。
以上是为什么启用二进制日志记录时 MySQL 会抛出有关确定性函数的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!