Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menonaktifkan Mode Ketat MySQL

MySQL, dan MariaDB, mode ketat mengontrol bagaimana nilai yang tidak valid atau hilang dalam kueri perubahan data ditangani; ini termasuk pernyataan INSERT, UPDATE, dan CREATE TABLE. Dengan mengaktifkan mode ketat MySQL, yang merupakan status default, data yang tidak valid atau hilang dapat menyebabkan peringatan atau kesalahan saat mencoba memproses kueri.

Ketika mode ketat dinonaktifkan, kueri yang sama akan memiliki nilai yang tidak valid, atau hilang, yang disesuaikan dan akan menghasilkan peringatan sederhana. Ini mungkin tampak seperti hasil yang disukai, namun dengan mode ketat yang dinonaktifkan, tindakan tertentu dapat menyebabkan hasil yang tidak diharapkan; misalnya, ketika nilai yang dimasukkan melebihi batas karakter maksimum, nilai tersebut akan dipotong agar sesuai dengan batas tersebut.

Ada berbagai alasan mengapa mode ketat MySQL mungkin perlu dinonaktifkan, namun yang paling umum adalah saat server menjalankan WHMCS — ini adalah persyaratan alat itu.

Pemeriksaan Pra-Penerbangan

  • Instruksi ini ditujukan khusus untuk menonaktifkan mode ketat MySQL pada server Liquid Web yang dikelola dengan cPanel.
  • Server harus menjalankan MySQL 5.6/5.7 atau MariaDB 10.x
  • Baris perintah dan akses tingkat root melalui SSH akan diperlukan untuk mengikuti tutorial ini.

Langkah #1:Selalu Buat Cadangan!

Setiap kali memodifikasi file di server, selalu praktik terbaik untuk mengambil beberapa bentuk cadangan terlebih dahulu. Ini memastikan Anda memiliki cara untuk mengembalikan perubahan jika terjadi kesalahan; ini juga bermanfaat karena membantu melacak kapan dan perubahan apa yang dibuat.

Saat masuk ke SSH dengan pengguna root, lakukan hal berikut:

cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}

Perintah di atas menggunakan 'BASH brace expansion' untuk membuat salinan cadangan file di direktori aslinya.

Langkah #2:Nonaktifkan MySQL Strict Mode

Tergantung pada server dan konfigurasi saat ini, Anda mungkin perlu mengedit salah satu, atau keduanya, dari file berikut di server. Umumnya, jalur konfigurasi yang relevan hanya ada di salah satunya, namun, bisa juga di salah satunya tanpa menyebabkan masalah; jadi umumnya yang terbaik adalah memeriksa keduanya.

Untuk mengedit file, Anda akan membuka file dengan editor baris perintah favorit Anda. Dalam contoh ini, kami menggunakan 'vim'.

vim /usr/my.cnf
vim /etc/my.cnf

Di vim, Anda dapat menekan "a" atau "i" untuk masuk ke mode penyisipan teks; menekan tombol escape (Esc) pada keyboard akan mengembalikan Anda ke mode perintah. Untuk penyegaran tentang mengedit file dengan vim, lihat Tutorial Pengguna Baru kami:Ikhtisar Editor Teks Vim.

Dalam setiap file di atas Anda akan mencari baris dengan konten berikut:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Jika Anda menemukan baris yang mirip dengan di atas yang mengatur variabel `sql_mode` maka Anda perlu menggantinya dengan baris berikut untuk menonaktifkan mode ketat MySQL.

sql_mode=""

Setelah penyesuaian ini dilakukan, atau Anda telah mengonfirmasi bahwa file tidak perlu disesuaikan, Anda akan menyimpan dan menutup file tersebut.

Langkah #3:Mulai Ulang Layanan MySQL

Terakhir, untuk membuat perubahan ini efektif, Anda perlu me-restart layanan MySQL karena hanya akan membaca file konfigurasi saat pertama kali dimuat. Untuk memaksa MySQL menggunakan file konfigurasi baru, Anda akan melakukan hal berikut:

Untuk server CentOS 7:
systemctl restart mysql

Untuk CentOS 6 dan sebelumnya:
/etc/init.d/mysql restart

Setelah mengeluarkan perintah ini di server, layanan MySQL akan dimulai ulang dan akan memuat perubahan yang dibuat. Jika semua petunjuk diikuti dan diselesaikan, maka mode ketat MySQL sekarang harus dinonaktifkan.

Untuk memverifikasi bahwa proses telah selesai dengan benar, Anda dapat menjalankan yang berikut:

mysql -e "SELECT @@sql_mode;"

Outputnya mungkin terlihat seperti berikut:

+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+

Jika Anda memiliki pertanyaan atau merasa tidak nyaman melakukan perubahan ini sendiri, silakan hubungi Heroic Support®.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO:Server MySQL telah hilang

  2. Menyetel ulang kata sandi ROOT di MySQL 5.6

  3. Perbarui Kueri Untuk Memperbarui Baris di MySQL

  4. PHP &MySQL:mysqli_num_rows() mengharapkan parameter 1 menjadi mysqli_result, diberikan boolean

  5. Menggunakan LIMIT dalam GROUP BY untuk mendapatkan N hasil per grup?