」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何解決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
瀏覽:292

How to Solve the \

匯入MySQL資料庫時,可能會遇到錯誤「1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, 或 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:

  • 對於相同的輸入參數始終產生相同結果的函數。

非確定性:

  • 對於相同的輸入參數,函數並不總是產生相同的結果。如果沒有明確聲明,MySQL 預設為 NOT DETERMINISTIC。

READS SQL DATA:

  • 僅從資料庫讀取資料的函數。

NO SQL:

  • 不包含任何 SQL 語句的函數。

CONTAINS SQL:

  • 包含 SQL 指令但既不讀取也不寫入資料的函數。

選擇正確的聲明

選擇正確的聲明函數的聲明取決於其行為。如果函數的輸出取決於資料庫外部的因素,例如當前時間或隨機數產生器,則應將其宣告為 NOT DETERMINISTIC。如果函數僅讀取數據,則可以將其宣告為 READS SQL DATA。如果函數不包含任何SQL語句,可以宣告為NO SQL。

最新教學 更多>
  • 如何保證jQuery事件觸發的順序?
    如何保證jQuery事件觸發的順序?
    確保jQuery 事件觸發器的順序在具有多個腳本區塊的Web 應用程式中,確保綁定到某個腳本區塊的事件的預期執行順序特定的元素可能具有挑戰性。但是,有一些策略可以維持所需的順序。 建立自訂事件一種方法涉及建立自訂事件並將回調綁定到它們。當其他回調觸發事件時,可以按所需的順序觸發這些自訂事件。例如:$...
    程式設計 發佈於2024-11-16
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1和$array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建構一...
    程式設計 發佈於2024-11-16
  • 如何將 TiXml 輸出寫入記憶體緩衝區而不是檔案?
    如何將 TiXml 輸出寫入記憶體緩衝區而不是檔案?
    建立記憶體緩衝區作為TiXml 中的輸出的FILE*在某些情況下,能夠將TiXml 輸出寫入記憶體緩衝區而不是文件可能會很有用。然而,TiXml 中沒有直接的功能來處理這個問題。 解決方案:使用POSIX 函數為了克服這個限制,POSIX 提供了兩個函數,使您能夠創建作為FILE* 的內存緩衝區:f...
    程式設計 發佈於2024-11-16
  • 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
  • 當我的查詢特別要求要取得過去七天的資料時,為什麼我只能取得過去五天的資料?
    當我的查詢特別要求要取得過去七天的資料時,為什麼我只能取得過去五天的資料?
    檢索最近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: bla...
    程式設計 發佈於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.Logg...
    程式設計 發佈於2024-11-16
  • 如何有效率地檢索MySQL分組資料的首條和尾條記錄?
    如何有效率地檢索MySQL分組資料的首條和尾條記錄?
    在MySQL中使用聚合函數檢索分組資料的第一條和最後一筆記錄在MySQL中,當使用聚合函數從分組記錄中取得資料時,檢索該組的第一個和最後一個記錄可能具有挑戰性。雖然多個查詢可以完成此任務,但對於大型表來說效率可能較低。 為了優化這個過程,MySQL 使用 GROUP_CONCAT 和 SUBSTRI...
    程式設計 發佈於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