”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何解决MySQL中的“1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\”错误?

如何解决MySQL中的“1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\”错误?

发布于2024-11-16
浏览:616

How to Solve the \

导入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;

方法二:配置mysql.ini文件

log_bin_trust_function_creators = 1;

通过将此值设置为1,可以放宽检查非确定性函数。应谨慎使用此选项,因为它可能会损害数据的完整性。

了解确定性函数

为了避免将来出现此错误,需要采用更好的方法是对存储函数使用确定性声明。这些声明告知 MySQL 该函数对于相同的输入参数是否总是产生相同的结果。以下是不同的确定性声明:

DETERMINISTIC:

  • 对于相同的输入参数始终产生相同结果的函数。

不是确定性:

  • 对于相同输入参数并不总是产生相同结果的函数。如果没有显式声明,MySQL 默认为 NOT DETERMINISTIC。

READS SQL DATA:

  • 仅从数据库读取数据的函数。

不SQL:

  • 不包含任何 SQL 语句的函数。

CONTAINS SQL:

  • 包含 SQL 指令但既不读取也不写入数据的函数。

选择正确的声明

为函数选择正确的声明取决于其行为。如果函数的输出取决于数据库外部的因素,例如当前时间或随机数生成器,则应将其声明为 NOT DETERMINISTIC。如果函数仅读取数据,则可以将其声明为 READS SQL DATA。如果函数不包含任何SQL语句,可以声明为NO SQL。

最新教程 更多>
  • JavaScript 如何将数据发送到 MySQL 数据库?
    JavaScript 如何将数据发送到 MySQL 数据库?
    如何从 JavaScript 向 MySQL 数据库发送数据JavaScript 与其他编程语言不同,由于运行环境不同,无法直接与 MySQL 数据库通信。 JavaScript 在客户端(在 Web 浏览器中)运行,而数据库驻留在服务器端。为了弥补这一差距,必须使用 PHP、Java、.Net 或...
    编程 发布于2024-11-16
  • 如何通过 Spring 的 JDBCTemplate 有效地使用 IN() SQL 查询?
    如何通过 Spring 的 JDBCTemplate 有效地使用 IN() SQL 查询?
    使用 Spring 的 JDBCTemplate 进行有效的 IN() SQL 查询您有一个 IN() 查询,当前需要您构建一个包含多行的子句代码:StringBuilder jobTypeInClauseBuilder = new StringBuilder(); for(int i = 0; i...
    编程 发布于2024-11-16
  • 如何确保 C++ 中准确的浮点精度?
    如何确保 C++ 中准确的浮点精度?
    C 中的浮点精度 在 C 中处理浮点数时,必须了解其精度限制。考虑以下代码:double a = 0.3; std::cout.precision(20); std::cout << a << std::endl;结果是 0.2999999999999999889 而不是 0...
    编程 发布于2024-11-16
  • 如何使用反射来有效测试 Go 中具有相似签名的多个函数?
    如何使用反射来有效测试 Go 中具有相似签名的多个函数?
    在 Go 中利用反射进行功能单元测试当测试具有相似签名和返回值的多个函数时,为每个函数编写单独的测试是很乏味的。在 Go 中,反射可以提供一种解决方案来集体测试这些函数。问题概述考虑一组具有以下签名的函数(Func1,Func2,...): func YourFunction() (int, err...
    编程 发布于2024-11-16
  • 按值返回对象何时触发移动构造函数?
    按值返回对象何时触发移动构造函数?
    按值从函数返回类的对象考虑从函数返回类的对象的情况价值。在这种情况下,返回的对象通常被视为左值,这意味着它在内存中具有名称和地址。然而,某些情况下可能会导致返回的对象被视为右值,即没有名称或地址的临时对象。隐式移动规则C 定义了按值返回对象时可能应用的隐式移动规则。该规则规定,如果满足以下条件:返回...
    编程 发布于2024-11-16
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1和$array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求是构...
    编程 发布于2024-11-16
  • 当我的查询特别要求获取过去七天的数据时,为什么我只能获取过去五天的数据?
    当我的查询特别要求获取过去七天的数据时,为什么我只能获取过去五天的数据?
    检索最近7天的数据效率将数据从SQL Server传输到MySQL时,必须仅过滤掉相关数据。在这种情况下,提取最近 7 天的数据至关重要。然而,提供的 SQL 查询产生了意外结果。问题:缺少数据使用 GETDATE()-7 和 GETDATE() 筛选数据的查询仅检索到五天的数据结果。这种差异需要探...
    编程 发布于2024-11-16
  • 如何在 Go 中解析带有嵌套键值对的 YAML 文件?
    如何在 Go 中解析带有嵌套键值对的 YAML 文件?
    在 Go 中解析 YAML 文件在 Go 中解析 YAML 文件涉及利用 gopkg.in/yaml.v2 提供的 YAML 库。提供的代码旨在解析具有嵌套键值对的 YAML 文件,如下所示:firewall_network_rules: rule1: src: blabla...
    编程 发布于2024-11-16
  • For 与 forEach:JavaScript 数组迭代哪个最有效?
    For 与 forEach:JavaScript 数组迭代哪个最有效?
    JavaScript 效率:for 与 forEachJavaScript 提供了两种迭代数组中元素的常用方法:传统的 'for' 循环和较新的“.forEach”方法。在这两个选项之间进行选择取决于手头任务的效率、好处和具体要求。for 循环JavaScript 中的“for”循环...
    编程 发布于2024-11-16
  • 如何在 Go 中将消息打印到标准错误?
    如何在 Go 中将消息打印到标准错误?
    在 Go 中将消息打印到标准错误如果您需要与现有日志分开打印调试或测试日志,您可以考虑发送消息到标准错误流 (stderr)。当您想要隔离日志以便于分析时,这非常有用。打印到 stderr 的方法Go 中有多种方法可以将消息打印到 stderr:1。使用log.Logger:创建一个新的log.Lo...
    编程 发布于2024-11-16
  • 如何高效检索MySQL分组数据的首条和尾条记录?
    如何高效检索MySQL分组数据的首条和尾条记录?
    在MySQL中使用聚合函数检索分组数据的第一条和最后一条记录在MySQL中,当使用聚合函数从分组记录中获取数据时,检索该组的第一个和最后一个记录可能具有挑战性。虽然多个查询可以完成此任务,但对于大型表来说效率可能较低。为了优化此过程,MySQL 使用 GROUP_CONCAT 和 SUBSTRING...
    编程 发布于2024-11-16
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-16
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-16
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-16
  • JavaScript 中的交互:“警报”、“提示”和“确认”
    JavaScript 中的交互:“警报”、“提示”和“确认”
    **** 欢迎回到我们的 JavaScript 世界之旅!在这篇博文中,我们将探讨在 JavaScript 中与用户交互的三种基本方法:alert、prompt 和 confirm。这些方法分别允许您显示消息、收集用户输入和确认操作。让我们深入研究每种方法并看看它们是如何工作的。 ...
    编程 发布于2024-11-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3