This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA...

2023-05-18 14:54:01 浏览数 (2)

一个很烂的标题

标题很长,但是还是有三个...表示省略。 这是一个MySQL自定义函数的报错信息。全部报错信息如下:

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)

中文大意就是使用百度翻译翻译翻译

此函数的声明中没有DENTISTIC、NO SQL或READS SQL DATA,并且启用了二进制日志记录(您可能需要使用不太安全的log_bin_trust_function_creators变量)

解决方法

使用chatgpt解决,啊哈哈。 这个警告是因为您的函数没有指定 DETERMINISTIC、NO SQL 或 READS SQL DATA 中的任何一个,而且二进制日志记录已启用。这意味着您的函数可能会对数据进行更改,但 MySQL 不知道它是否会更改数据,因此会发出警告。 为了解决这个问题,您可以在函数声明中添加 DETERMINISTIC、NO SQL 或 READS SQL DATA 中的一个或多个。这些关键字告诉 MySQL 函数的行为方式,从而使其能够更好地优化查询和避免不必要的警告。 如果您的函数不会更改数据,则可以将其声明为 NO SQL。如果您的函数会更改数据,则应该将其声明为 READS SQL DATA 或 MODIFIES SQL DATA,具体取决于函数的行为。 如果您不想看到这个警告,可以将 log_bin_trust_function_creators 变量设置为 1,这将允许您创建没有 DETERMINISTIC、NO SQL 或 READS SQL DATA 的函数,但这可能会降低 MySQL 的安全性。

小小结语

各个数据库之间的差异挺大的,甚至是SQL的使用,更别说自定义函数这些了。 以下是一篇关于MySQL自定义函数讲解很好的文章(至少我认为),很容易学会简单基础的自定义函数。 跳转链接在此

0 人点赞