Strict Mode memiliki fungsi untuk mengontrol kesalahan (invalid/ missing value) yang terjadi pada perubahan seperti insert, update, atau create tabel.
Di MySQL, Strict Mode diaktifkan secara default terkadang menyebabkan peringatan yang mengganggu ketika pengguna mencoba untuk menyimpan record yang memiliki nilai kosong pada beberapa tabel. Terkadang, record tidak disimpan/diperbarui sama sekali dan hal ini dapat mengganggu operasional situs web atau aplikasi web.
PHP Error atau tidak bisa menambahkan baris pada MySQL, ada kemungkinan Strict Mode masih aktif. Saat mode strict aktif maka perintah SQL tidak valid atau default value nya tidak ada akan membuat eksekusi SQL akan gagal saat melakukan perintah INSERT dan UPDATE.
Pesan errornya bisa beragam, misal type kolom salah, atau bisa out of range. Kasus ini terjadi biasanya pada programmer yang menggunakan statement MySQL yang tidak standar, dan ini akan menyebabkan masalah tentunya jika Strict Mode aktif.
Check Strict Mode
Login ke server menggunakan SSH dengan akses root atau akses yang setara, kemudian akses MySQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [root@iaasweb ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 23 Server version: 8.0.32 MySQL Community Server - GPL Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW VARIABLES LIKE 'sql_mode'; +---------------+-----------------------------------------------------------------------------------------------------------------------+ | Variable_name | Value | +---------------+-----------------------------------------------------------------------------------------------------------------------+ | sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION | +---------------+-----------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.07 sec) |
Jika output yang keluar memunculkan value seperti diatas, maka Strict Mode dalam keadaan aktif.
Disable Strict Mode
Untuk menonaktifkan Strict Mode pada MySQL, silahkan masuk pada file /etc/my.cnf kemudian berikan value sebagai berikut
1 2 3 4 5 | [root@iaasweb ~]# nano /etc/my.cnf [mysqld] ... .. sql_mode="" |
Setelah ditambahkan jangan lupa untuk melakukan restart webserver dan database
1 2 | [root@iaasweb ~]# systemctl restart mysqld [root@iaasweb ~]# systemctl restart httpd |