Apabila bekerja dengan MySQL, seseorang sering menghadapi keperluan untuk mengubah suai tetapan SQL_MODE. Mod ini mengawal julat tingkah laku SQL dan konfigurasi parser, yang mempengaruhi faktor seperti pengesahan data, pengendalian transaksi dan banyak lagi.
Sintaks untuk menetapkan berbilang mod dalam SQL_MODE menggunakan arahan SET adalah betul:
SET GLOBAL SQL_MODE='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION'
Apabila berhadapan dengan senario seperti mengemas kini pangkalan data dengan nilai UNC menggunakan pengguna yang berbeza , menetapkan mod global untuk NO_BACKSLASH_ESCAPES masuk akal kerana ia memastikan semua pengguna terjejas, tanpa mengira sesi mereka tetapan.
Malangnya, pengubahsuaian terus tetapan global menggunakan SET tidak berterusan dan ditetapkan semula selepas MySQL dimulakan semula. Untuk membuat perubahan kekal, tetapkan mod dalam fail konfigurasi(/etc/mysql/my.cnf):
[mysqld] sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Untuk versi MySQL yang lebih baharu (cth., 5.7.8 ), gunakan sintaks berikut:
[mysqld] sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
Untuk tetapan SQL_MODE berterusan seluruh sistem yang mempengaruhi semua pengguna, menetapkan mod global adalah pendekatan pilihan. Perubahan kekal harus dibuat dalam fail konfigurasi, memastikan bahawa gelagat SQL yang diingini adalah konsisten merentas sesi.
Atas ialah kandungan terperinci Bagaimana untuk Tetapkan Global SQL_MODE secara Kekal dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!