1. 程式人生 > 資料庫 >MySQL中SQL Mode的檢視與設定詳解

MySQL中SQL Mode的檢視與設定詳解

MySQL中SQL Mode的檢視與設定

MySQL可以執行在不同的模式下,而且可以在不同的場景下執行不同的模式,這主要取決於系統變數 sql_mode 的值。本文主要介紹一下這個值的檢視與設定,主要在Mac系統下。

對於每個模式的意義和作用,網上很容易找到,本文不做介紹。

按作用區域和時間可分為3個級別,分別是會話級別,全域性級別,配置(永久生效)級別。

會話級別:

檢視-

select @@session.sql_mode;

修改-

set @@session.sql_mode='xx_mode'
set session sql_mode='xx_mode'

session均可省略,預設session,僅對當前會話有效

全域性級別:

檢視-

select @@global.sql_mode;

修改-

set global sql_mode='xx_mode';
set @@global.sql_mode='xx_mode';

需高階許可權,僅對下次連線生效,不影響當前會話(親測過),且MySQL重啟後失效,因為MySQL重啟時會重新讀取配置檔案裡對應值,如果需永久生效需要修改配置檔案裡的值。

配置修改(永久生效):

開啟 vi /etc/my.cnf

在下面新增

[mysqld]
sql-mode = "xx_mode"

注意:[mysqld]必須加,且sql-mode中間是“-”,而不是下劃線。

儲存退出,重啟伺服器,即可永久生效。

因為Mac下安裝MySQL沒有配置檔案,所以需要自己手動新增。

ps

最後額外加一點東西,就是Mac下MySQL的啟動、停止、重啟等操作。

主要有兩種方式,

一是點選”系統偏好設定“對應的MySQL面板,可實現管理。

二是命令列方式。

MySQL相關的執行指令碼,常用的主要是下面兩個:

/usr/local/mysql/support-files/mysql.server
/usr/local/mysql/bin/mysql

mysql.server是控制伺服器的啟停等操作。

mysql.server start|stop|restart|status

mysql主要用於連線伺服器。

mysql -uroot -p **** -h **** -D **

有些需要sudo許可權,且可將相關路徑新增到環境變數,可簡化書寫,至於如何新增是不做介紹了。

知識點擴充套件:

Strict Mode闡述

根據 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制:

1).不支援對not null欄位插入null值

2).不支援對自增長欄位插入''值,可插入null值

3).不支援 text 欄位有預設值

看下面程式碼:(第一個欄位為自增欄位)

$query="insert into demo values('','$firstname','$lastname','$sex')";

上邊程式碼只在非strict模式有效。

Code程式碼

$query="insert into demo values(NULL,'$sex')";

上邊程式碼只在strict模式有效。把空值''換成了NULL.