Mysql Strict Mode Aktif mi , Pasif mi?
Bunu mysql sunucunuzda aşağıdaki sorguyu çalıştırarak öğrenebilirsiniz.
mysql> SELECT @@sql_mode;
+——————————————–+
| @@sql_mode |
+——————————————–+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+——————————————–+
1 row in set (0.00 sec)
Yukarıda aktif gözüküyor.
Bunu doğrulamanın bir diğer yolu ise aşağıdaki sorgudur.
mysql> SHOW VARIABLES LIKE ‘%SQL%’;
Connection id: 159718988
Current database: *** NONE ***
+————————–+——————————————–+
| Variable_name | Value |
+————————–+——————————————–+
| sql_auto_is_null | OFF |
| sql_big_selects | ON |
| sql_big_tables | OFF |
| sql_buffer_result | OFF |
| sql_log_bin | ON |
| sql_log_off | OFF |
| sql_low_priority_updates | OFF |
| sql_max_join_size | 18446744073709551615 |
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
| sql_notes | ON |
| sql_quote_show_create | ON |
| sql_safe_updates | OFF |
| sql_select_limit | 18446744073709551615 |
| sql_slave_skip_counter | 0 |
| sql_warnings | OFF |
+————————–+——————————————–+
15 rows in set (0.01 sec)
Kapatmak için my.cnf ya da my.ini dosyanızı açınız.
sql-mode=”STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION”
Yukarıdaki gibi bir satır görüyor iseniz bunu aşağıdaki gibi değiştirip mysql servisini restart edebilirsiniz.
sql-mode=”NO_ENGINE_SUBSTITUTION”
Eğer böyle bir satır yok ise kendiniz aşağıdaki satırı ekleyip servisi restart edebilirsiniz.
sql_mode=NO_ENGINE_SUBSTITUTION
Ayrıca belirtmekte fayda var ki , eğer strict mode aktif çalışıyor iseniz mysql güvenliğiniz daha üst seviyededir. Fakat sunucu üzerinde birden çok fazla db çalıştırıyor iseniz açmanızda bir sakınca bulunmamaktadır. Bu modda MySQL’e has bir çok özellik veritabanı uyumluluğu amacıyla devre dışı bırakılır. Daha doğru sorgular yazmanız ve birçok farklı nedenden dolayı strict mode tavsiye edilir.
Ayhan ARDA

Bir yanıt yazın