导入 MySQL 数据库时,您可能会遇到错误“1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and二进制日志记录已启用(您可能想要使用不太安全的 log_bin_trust_function_creators 变量)。”当您未指定数据库中函数的确定性时,就会出现此错误。
要解决此错误,您可以使用以下两种方法之一:
方法 1:暂时禁用二进制日志记录
SET GLOBAL log_bin_trust_function_creators = 1;
方法 2:配置 mysql.ini 文件
log_bin_trust_function_creators = 1;
通过将此值设置为 1,您可以放宽检查非确定性函数。应谨慎使用此选项,因为它可能会损害数据的完整性。
了解确定性函数
为了避免将来出现此错误,有更好的方法是对存储函数使用确定性声明。这些声明告知 MySQL 该函数对于相同的输入参数是否总是产生相同的结果。以下是不同的确定性声明:
DETERMINISTIC:
非确定性:
读取 SQL 数据:
NO SQL:
CONTAINS SQL:
选择正确的声明
选择正确的声明函数的声明取决于其行为。如果函数的输出取决于数据库外部的因素,例如当前时间或随机数生成器,则应将其声明为 NOT DETERMINISTIC。如果函数仅读取数据,则可以将其声明为 READS SQL DATA。如果函数不包含任何SQL语句,可以声明为NO SQL。
以上是如何解决MySQL中的“1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!