确定性、无 SQL 或在启用二进制日志记录的函数声明中读取 SQL 数据
在尝试将数据库导入 MySQL 时,错误消息表明函数在其声明中缺少以下声明之一并且可能会启用二进制日志记录:
1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)
解决问题
有两个解决此问题的方法:
SET GLOBAL log_bin_trust_function_creators = 1;
log_bin_trust_function_creators = 1;
这放宽了对非确定性函数(即修改数据的函数)的检查。
理解确定性声明
确定性函数对于相同的输入参数总是产生相同的结果,而非确定性函数则不会。 MySQL 在复制优化期间使用这些声明。
确定性声明的类型
有几种类型的确定性声明可用:
最佳实践
建议为存储的数据正确指定确定性声明确保最佳复制和数据完整性的功能。通过仔细考虑函数的性质并使用适当的声明,您可以防止错误并优化数据库性能。
以上是为什么我的 MySQL 函数会抛出有关确定性声明的'1418 (HY000)”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!