ERROR Cannot create stored routine pada MySql

Categories: Artikel Tips & Trick
Tags: No Tags
Comments: No Comments
Published on: November 20, 2011

Mau ngerjain tugas MyAql ketika pada bagian create procedure malah keluar ini Error (Code 1655): Cannot create stored routine, padahal udah di cek  berkali kali tetap aj eror, di coba modul yg ada dari kampus juga error, hmm iseng – iseng unsinstall aplikasinya n kali ini InnoDB juga diaktifkan masih error, akhirnya nyerah n nyari artikel di internet masalah ini, walaupun yg keluar bhs inggris semua 😀 maklum orang indonesia ramenya maen facebook aj, capede, back to topic.

akhirnya ketemu juga masalahnya, ini dikarenakan bugs bawaan dari mysql nya, kadang ketika waktu instalasi ada nilai2 variable yg berubah ga semestinya,  seperti sql_mode dalam tabel mysql.proc – memiliki tipe SET data termasuk semua mode SQL diperbolehkan, namun NO_ENGINE_SUBSTITUTION (yang secara default diatur pada server) hilang. Jadi menjalankan perintah ALTER TABLE pada tabel / kolom, membuat modus SQL hilang.

Kasusnya terbukti ketika saya tambahkan perintah warning; untuk melihat semua perintah warning yg keluar, ketika saya membuat kembali fungsi procedure terlihat pesan error Warning (Code 1265): Data truncated for column ‘sql_mode’, yg artinya variable di dalam sql_mode berubah tidak seperti semestinya, untuk mengatasinya cukup gambang, kita tinggal mengetikkan set @@sql_mode := ”;

ini maksudnya untuk merubah nilai variable sql_mode nya yg berubah menjadi kosong, nanti MySql nya secara otomatis mengisi nilai sql_mode dengan nilai default nya, hasilnya seperti berikut

mysql> set @@sql_mode := ”;
Query OK, 0 rows affected (0.00 sec)

mysql> create function fn_test(xx int(4)) returns int(4)
-> return xx;
Query OK, 0 rows affected (0.00 sec)

mysql> select fn_test(5);
+————+
| fn_test(5) |
+————+
|          5          |
+————+
1 row in set (0.00 sec)

No Comments - Leave a comment

Leave a comment

Your email address will not be published. Required fields are marked *

 


Welcome , today is Saturday, August 18, 2018