MySQL伺服器的SQL模式

安全劍客發表於2020-05-28

sql_mode的系統變數可以調控MySQL的SQL模式

任何一個客戶端可以在不影響其它客戶端的情況下改變MySQL伺服器對自己的反應

如果想在MySQL啟動時設定SQL模式,可以在mysql配置檔案中新增sql_mode選項

sql-mode=”TRADITIONAL”

如果在執行過程中修改SQL模式,則可以使用如下命令

setsql_mode="TRADITIONAL";

 

Client1

mysql> show variables like "sql_mode";

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| sql_mode      |      |

+---------------+-------+

1 row in set (0.00 sec)

 

mysql> set sql_mode="TRADITIONAL";

Query OK, 0 rows affected(0.23 sec)

 

mysql> show variables like "sql_mode";

+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

|Variable_name     |                                                                Value                                                                                                                                               |

+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

|sql_mode  |STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION|

+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

1 rowin set (0.00 sec)

 

mysql>

 

Client2

Client1已經修改了SQL模式,但是Client2的SQL模式沒有改變,這就說明客戶端之間的模式修改是互相不影響的

mysql> show variables like "sql_mode";

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| sql_mode      |      |

+---------------+-------+

1 row in set (0.00 sec)

 

mysql>

 

設定全域性變數(設定全域性變數設定,需要加上GLOBAL關鍵字,需要SUPER許可權)

mysql> set globalsql_mode="traditional";

Query OK, 0 rows affected(0.02 sec)

select@@session.sql_mode   --》檢視當前會話sql模式

select@@GLOBAL.sql_mode --》檢視系統會話sql模式

設定全域性變數後,新連線的客戶端預設的就是全域性的SQL模式



相關文章