July 25, 2017 thumb Mengubah SQL Mode Secara Permanen

hal yang paling menjengkelkan ketika melakukan upgrade MySQL adalah default settings system yang kadang berubah. sebagai contoh, dalam default settings MySQL pada ubuntu 14.04 memiliki sql mode traditional, sedangkan pada MySQL di ubuntu 16.04 default sql mode adalah ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER dan NO_ENGINE_SUBSTITUTION. tentu hal ini akan berpengaruh pada query milik saya yang mana kadang saya melakukan assign zero date pada sebuah kolom tertentu, misalnya tanggal lagi pasien yang kadang tidak diisi, dengan sql_mode NO_ZERO_IN_DATE query yang melakukan assign kolom tanggal 0000-00-00 akan dianggap sebagai error.

saya pernah menulis tentang maslaah ini (Mengatasi Error SQL Mode pada MySQL) dan cara mengatasinya dengan menggunakan settings pada file my.cnf, tapi bagaimana caranya seandainya kita tidak memiliki access secara langsung dalam system file my.cnf, mungkin karena hosting tersebut dibagi pakai. sedangkan untuk merubah source code satu-persatu untuk merngubah query tenteu tidak mungkin dilakukan karena jumlahnya sangat banyak.

untuk mengatasi hal ini, sebenarnya cukup sederhana, untunglah mysql menyediakan perintah untuk mengubah sql-mode secara temporary ketika akan menjalankan query, dengan kata lain pada session tertentu sql-mode dapat diubah ketika program sedang dijalankan. sehingga yang perlu kita lakukan adalah memberikan perintah pada mysql untuk mengubah sql-mode setiap kali kita akan menjalankan query.

sebagai contoh karena kebetulan saya menggunakan program php, maka pada file koneksi.php saya cukup jalankan sebuah query yang memerintahkan bahwa sql-mode session kali ini saya assign secara langsung, sehingga akan meng-override default sql-mode di system. berikut ini adalah querynya.

mysql_query("SET SESSION sql_mode = ''");

saya cukup masukan source code tersebut pada file koneks.php sehingga setiap kali melakukan koneksi ke database, akan dijalankan sebuah pengesetan sql_mode , dengan demikian query berikutnya yang harusnya error, menjadi sah dan dijalankan dengan baik oleh MySQL.

oke sampai sini dulu bahasanya, memang dalam seni dunia programming, banyak hal yang bisa diutak-atik sedemikian rupa. sampai jumpa pada tulisan berikutnya, Okey Donkey, Salam Goblooge.

Comments

total comments