簡體   English   中英

將 MySQL5.6 更新到 MariaDB10.3 后出現致命錯誤 - 由 sql 嚴格模式引起?

[英]Fatal error after update MySQL5.6 to MariaDB10.3 - caused by sql strict mode?

我的 ISP 已更新托管我的應用程序的共享服務器。 它涉及從 MySQL 5.6 到 MariaDB 10.3 的更新。 ISP 寫道: MariaDB 在很大程度上與 MySQL 兼容,並且大多數 web 應用程序都可以與 Z7F96733E2087658831CE 正常工作。 換句話說,它們不會受到最小差異的影響。

但是,自從更新以來,我的許多 EDIT 和 INSERT 不再起作用並產生致命錯誤。 在我的搜索中,我發現:

  • 問題在於寫入數據庫
  • 當並非所有字段都有值時似乎會發生,而我的應用程序中允許使用空字段

在我的進一步調查中,我遇到了: https://forums.cpanel.net/threads/mariadb-10-2-disabling-strict-mode.635157/根據此線程,我了解解決方案可能是在更改 sql 模式服務器設置來自:

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

至:

NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我試圖通過 DirectAdmin/PHPAdmin 變量對其進行更改。 由於它是共享服務器,因此我不允許更改設置,因此無法檢查(需要超級權限)。

我現在有3個問題:

  1. 這會是解決方案嗎? 在這種情況下,我會要求我的 ISP 更改此設置。
  2. 這是修復它的最佳方法嗎?
  3. 我可以用另一種方式解決這個問題嗎?

建議非常感謝。

該問題是由向數據庫寫入空值引起的。 如果表單中允許空值,則將其保存為空字符串“”。 但是,如果數據庫中的字段是 INT 或 DOUBLE 類型,則會導致錯誤。 要解決此問題,需要將數據庫表中的字段更改為 VARCHAR 類型。 另一種選擇是將查詢更改為將空字符串寫入 INT、DOUBLE 類型的 0 值。 將字段類型更改為 VARCHAR 是更簡單的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM