Cara menggunakan mod ketat mysql Mod Ketat

WBOY
Lepaskan: 2023-05-26 15:10:15
ke hadapan
2437 orang telah melayarinya

    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;
    Salin selepas log masuk

    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)
    Salin selepas log masuk
    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
    Salin selepas log masuk
    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)
    Salin selepas log masuk
    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
    Salin selepas log masuk
    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)
    Salin selepas log masuk

    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                      |
    +------------------------------+
    Salin selepas log masuk
    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
    Salin selepas log masuk
    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!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan