溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql嚴(yán)格模式Strict?Mode怎么使用

發(fā)布時(shí)間:2022-08-17 10:33:51 來(lái)源:億速云 閱讀:126 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了mysql嚴(yán)格模式Strict Mode怎么使用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇mysql嚴(yán)格模式Strict Mode怎么使用文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

    1.開(kāi)啟與關(guān)閉Strict Mode方法

    找到mysql安裝目錄下的my.cnf(windows系統(tǒng)則是my.ini)文件

    在sql_mode中加入STRICT_TRANS_TABLES則表示開(kāi)啟嚴(yán)格模式,如沒(méi)有加入則表示非嚴(yán)格模式,修改后重啟mysql即可

    例如這就表示開(kāi)啟了嚴(yán)格模式:

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    2.Strict Mode功能說(shuō)明

    • 不支持對(duì)not null字段插入null值

    • 不支持對(duì)自增長(zhǎng)字段插入”值

    • 不支持text字段有默認(rèn)值

    3.例子:

    創(chuàng)建數(shù)據(jù)表方便測(cè)試

    CREATE TABLE `mytable` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `name` varchar(20) NOT NULL,
     `content` text NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    1.not null字段插入null值測(cè)試

    插入一條記錄,name的值為null

    在非嚴(yán)格模式下執(zhí)行

    mysql> insert into mytable(content) values('programmer');
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    mysql> select * from mytable;
    +----+------+------------+
    | id | name | content    |
    +----+------+------------+
    |  1 |      | programmer |
    +----+------+------------+
    1 row in set (0.00 sec)

    執(zhí)行成功,name的值自動(dòng)轉(zhuǎn)為”

    在嚴(yán)格模式下執(zhí)行

    mysql> insert into mytable(content) values('programmer');
    ERROR 1364 (HY000): Field 'name' doesn't have a default value

    執(zhí)行失敗,提示字段name不能為null值

    2.自增長(zhǎng)字段插入”值測(cè)試

    對(duì)id字段插入”值

    在非嚴(yán)格模式下執(zhí)行

    mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    mysql> select * from mytable;
    +----+----------+------------+
    | id | name     | content    |
    +----+----------+------------+
    |  1 | fdipzone | programmer |
    +----+----------+------------+
    1 row in set (0.00 sec)

    執(zhí)行成功

    在嚴(yán)格模式下執(zhí)行

    mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');
    ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1

    執(zhí)行失敗,提示字段id不能為”

    mysql> insert into mytable(id,name,content) value(null,'fdipzone','programmer');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from mytable;
    +----+----------+------------+
    | id | name     | content    |
    +----+----------+------------+
    |  1 | fdipzone | programmer |
    +----+----------+------------+
    1 row in set (0.00 sec)

    字段id為null則可執(zhí)行成功

    3.text字段默認(rèn)值測(cè)試

    創(chuàng)建一個(gè)數(shù)據(jù)表mytable,其中text設(shè)置默認(rèn)值default=”

    在非嚴(yán)格模式下執(zhí)行

    mysql> CREATE TABLE `mytable` (
        ->  `id` int(11) NOT NULL AUTO_INCREMENT,
        ->  `name` varchar(20) NOT NULL,
        ->  `content` text NOT NULL default '',
        ->  PRIMARY KEY (`id`)
        -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Query OK, 0 rows affected, 1 warning (0.03 sec)
    
    mysql> show tables;
    +------------------------------+
    | Tables_in_test_version       |
    +------------------------------+
    | mytable                      |
    +------------------------------+

    執(zhí)行成功

    在嚴(yán)格模式下執(zhí)行

    mysql> CREATE TABLE `mytable` (
        ->  `id` int(11) NOT NULL AUTO_INCREMENT,
        ->  `name` varchar(20) NOT NULL,
        ->  `content` text NOT NULL default '',
        ->  PRIMARY KEY (`id`)
        -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    ERROR 1101 (42000): BLOB/TEXT column 'content' can't have a default value

    執(zhí)行失敗,提示content字段是TEXT類型,不能使用默認(rèn)值。

    總結(jié),使用mysql嚴(yán)格模式可以使數(shù)據(jù)更加安全嚴(yán)格,缺點(diǎn)是減少了對(duì)空數(shù)據(jù)入庫(kù)的兼容性。建議開(kāi)發(fā)環(huán)境使用嚴(yán)格模式以提高代碼的質(zhì)量及對(duì)數(shù)據(jù)的嚴(yán)謹(jǐn)性。

    關(guān)于“mysql嚴(yán)格模式Strict Mode怎么使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“mysql嚴(yán)格模式Strict Mode怎么使用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI