Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan mod ketat mysql Mod Ketat

Cara menggunakan mod ketat mysql Mod Ketat

WBOY
WBOYke hadapan
2023-05-26 15:10:152438semak imbas

    1. Cara menghidupkan dan mematikan Mod Ketat

    Cari fail my.cnf (my.ini for windows system) dalam direktori pemasangan mysql

    Menambah STRICT_TRANS_TABLES ke sql_mode bermakna menghidupkan mod ketat Jika ia tidak ditambah, ini bermakna mod tidak ketat selepas pengubahsuaian

    Sebagai contoh, ini bermakna mod ketat dihidupkan. :

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    2. Penerangan fungsi Mod Strict

    • Tidak menyokong sisipan nilai. ke dalam medan bukan nol

    • Tidak menyokong memasukkan "nilai" ke dalam medan yang meningkat sendiri

    • Tidak menyokong nilai lalai untuk medan teks

    3. Contoh :

    Buat jadual data untuk memudahkan ujian

    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 >

    Masukkan rekod, nilai nama adalah batal

    Laksanakan dalam mod tidak ketat

    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)
    Laksanakan dengan jayanya, nilai nama ialah ditukar secara automatik kepada "

    Laksanakan dalam mod ketat

    mysql> insert into mytable(content) values('programmer');
    ERROR 1364 (HY000): Field 'name' doesn't have a default value
    Pelaksanaan gagal, menyebabkan nama medan tidak boleh menjadi nilai nol

    2. Masukkan " ujian nilai untuk medan meningkat sendiri

    Sisipkan "nilai untuk medan id

    Dilaksanakan dalam mod tidak ketat

    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)
    Dilaksanakan dengan jayanya

    Dilaksanakan dalam mod ketat

    mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');
    ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1
    Pelaksanaan gagal, menyebabkan id medan tidak boleh "

    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)

    Jika id medan adalah batal, pelaksanaan boleh berjaya

    3. Ujian nilai lalai medan teks

    Buat satu jadual data mytable, dengan teks menetapkan nilai lalai="

    Dilaksanakan dalam mod tidak ketat

    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                      |
    +------------------------------+
    Dilaksanakan dengan jayanya

    Pelaksanaan dalam mod ketat

    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
    gagal, menyebabkan medan kandungan adalah jenis TEXT dan nilai lalai tidak boleh digunakan.

    Menggunakan mod ketat MySQL boleh meningkatkan keselamatan data, tetapi kelemahannya ialah ia mengurangkan keserasian dengan storan data kosong. Adalah disyorkan bahawa persekitaran pembangunan menggunakan mod ketat untuk meningkatkan kualiti kod dan ketegasan data.

    Atas ialah kandungan terperinci Cara menggunakan mod ketat mysql Mod Ketat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam