程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 十二、mysql sql_mode 簡學,sql_mode簡學

十二、mysql sql_mode 簡學,sql_mode簡學

編輯:MySQL綜合教程

十二、mysql sql_mode 簡學,sql_mode簡學


1.一般默認情況下sql_mode默認為空,也就是不嚴格的sql檢查

2.如果sql_mode為空的情況下,測試:
    create table tt3 (name char(2)); //定義一個name字段長度為定長2的tt3表
    insert into tt3 values ('wo'); //正常插入,無措
    insert into tt3 values ('woshi'); //正常插入,但值已被截取成了“wo”
    
    修改sql_mode為嚴格模式:
    set session sql_mode = 'STRICT_TRANS_TABLES';
    insert into tt3 values ('woshi'); //報錯:ERROR 1406 (22001): Data too long for column 'name' at row 1
    也就是說嚴格情況下,是嚴格控制字段輸入值的長度的

3.set session sql_mode = 'STRICT_TRANS_TABLES'; 本次連接生效
  set global sql_mode  = 'STRICT_TRANS_TABLES'; 本次連接不生效,新的連接生效
  
4.set session sql_mode = 'NO_BACKSLASH_ESCAPES'; 開啟後,斜槓將會被當作字符串插入
  比如 insert into tt3 values ('\1'); ,開啟之前插入"1",開啟之後插入"\1";
  
5.set session sql_mode = 'PIPES_AS_CONCAT'; 開啟後,||將被當做連接符
  比如 select "beijing"||2008; 開啟之前返回1,(進行或運算),開啟之後返回"beijin2008"

6.常見的sql_mode
  ANSI::更接近標准的sql
  STRICT_TRANS_TABLES::嚴格模式,不允許非法日期,不允許超出字段長度定義的值
  TRADITIONAL::嚴格模式,插入不正確的值將直接報錯,一般可用在事務的時候

 


怎在沒最高權限的情況下將mysql的sql_mode永久設置為空

默認沒有要設置直接加上[mysqld]面加
[mysqld]
sql_mode = strict_all_tables希望有幫助NeverAppearIT實驗室,天天軟件測試網逛逛

mysql(myini)的sql-mode在什地方,找不到這條語句?

sql-mode有默認值默認 sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

mysql命令行輸入 show variables like '%sql-mode%';查看

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved