Mysql嚴格模式,顧名思義,是一種比較嚴格的模式,它呢使用來限制在處理數據的時候,更新數據插入數據的時候,對數據更嚴格的進行對比和檢查,保證數據的準確性和完整性。在這個模式下可以有效的防止非法或者不正確的數據寫入到數據庫中,從而有效提高數據的可靠性。

嚴格模式主要分為以下幾種:
?STRICT_TRANS_TABLES?:在這種模式下,MySQL會對所有支持事務的存儲引擎(如InnoDB)執行嚴格的檢查。
?STRICT_ALL_TABLES?:這種模式下,MySQL會對所有存儲引擎執行嚴格的檢查,無論它們是否支持事務。
?NO_ZERO_DATE?、?NO_ZERO_IN_DATE?、?ERROR_FOR_DIVISION_BY_ZERO?等:這些是嚴格模式下的具體選項,用于控制特定類型的數據錯誤處理?。
NO_ZERO_DATE:禁止插入零日期('0000-00-00')。
NO_ZERO_IN_DATE:禁止插入零日期或零時間('0000-00-00 00:00:00')。
ERROR_FOR_DIVISION_BY_ZERO:禁止除以零操作,并返回錯誤信息。
那么我們如何關閉嚴格模式呢?
1、可以通過命令行命令來臨時修改
登錄MySQL服務器:
使用命令行客戶端或圖形界面客戶端登錄到MySQL服務器。在命令行中,可以使用mysql -u 用戶名 -p命令登錄,然后輸入MySQL用戶密碼。
查看當前的SQL模式設置:
執行SHOW VARIABLES LIKE 'sql_mode';命令來查看當前的sql_mode設置,其中可能包含STRICT_TRANS_TABLES(表示啟用嚴格模式)。
修改SQL模式:
執行SET GLOBAL sql_mode='';命令來臨時關閉嚴格模式(對當前MySQL服務器實例的所有新會話生效,但重啟MySQL后會失效)。
如果只想對當前會話生效,可以使用SET SESSION sql_mode='';命令。
2、通過修改配置文件永久修改
找到MySQL配置文件:
在Linux系統中,通常是/etc/my.cnf或/etc/mysql/my.cnf。
在Windows系統中,通常是my.ini。
編輯配置文件:
打開配置文件,找到[mysqld]部分。
在其中添加或修改sql_mode參數,移除STRICT_TRANS_TABLES或其他嚴格模式相關的設置。例如:
ini
[mysqld]
sql_mode="NO_ENGINE_SUBSTITUTION" # 示例,根據需要設置其他模式
或者,如果希望完全關閉所有模式(通常不推薦,因為可能會降低數據完整性和準確性),可以設置為空字符串:
ini
[mysqld]
sql_mode=""
重啟MySQL服務:
保存配置文件更改后,需要重啟MySQL服務以使更改生效。可以使用服務管理工具(如systemctl、service命令)或命令行工具(如mysqladmin shutdown后mysqld_safe &)來重啟MySQL服務。
驗證更改:
重新登錄到MySQL服務器,并再次執行SHOW VARIABLES LIKE 'sql_mode';命令來驗證sql_mode設置是否已更新,從而確認嚴格模式已被關閉。



