PHP 5 ve MySQL 5.x sonrası bu hata mesajını çok sık alabilirsiniz “doesn’t have a default value“. Bunun anlamı sunucunuz titiz modda yanni strict modd çalışıyor olabilir. MySQL server veri girdilerinde çok hassas davranır ve belirsizlik durumlarında “NULL” gibi hata mesajı döndürür ve kullanıcıyı uyarır. Aynı zamanda güvenlik düzeyi hat safhadadır. Elbette iyi yapılandırılmış bir veritabanı çok verimli çalışır ama sistemi yeni güncellediniz ve çok veritabanınız varsa bu modu devre dışı bırakmanız gerekebilir. En azından tüm veritabanı sorunlarını giderene kadar.


MySQL sunucunun strict modda çalıştığından emin olmak için MySQL’e root yetkileriyle giriş yaparak şu sorguyu çalıştırın ve sonucu görün.

Kod:
mysql_> SHOW VARIABLES LIKE ‘%SQL%’;
sql-mode değeri NO_ENGINE_SUBSTITUTION şeklindeyse MySQL sunucunuz normal modda çalışıyor yani çok titiz değil.

Eğer bu şekilde STRICT_TRANS_TABLES gibi bir sonuç çıkıyorsa strict mod yani çok sıkı güvenlik modunda çalışıyor anlamına gelir.

Şimdi asıl mesele sunucumuz strict modda ise bunu nasıl pasif duruma getireceğimiz sorunu akla geliyor ister istemez. Ben bunu önermiyorum. Hata aldığınız veritabanı alanlarını PHPMyAdmin ile düzenleyin daha güvenli ve sağlam bir veritabanız olsun ama ben riskleri göze alıyorum diyenler için MySQL’in kurulduğu dizine bakın; Linux için my.cnf windows için my.ini konfigurasyon dosyalarını arayın. MySQL’in kurulu olduğu yerlerde böyle bir ayar dosyası yoksa Linuz için /etc ve /etc/mysql dizinlerine bakabilirsiniz. Windows içinse Windows/system dizinlerini aratabilirsiniz. Ayar dosyamızı bulduğumuzda sql-mode= diye bir satırı arayın ve bulduğunuz bu satırı ya düzenleyin veya # işaretiyle pasif duruma getirip MySQL’i restart edin.

Muhtemelen böyle bir satır bulursanız;

Kod:
sql_mode=NO_ENGINE_SUBSTITUTION ,STRICT_TRANS_TABLES
o satırı bu hale getirmeniz yeterli olabilir.
Kod:
sql_mode=NO_ENGINE_SUBSTITUTION
veya bu satırı bulamadınız ama sunucunuz strict modda çalışıyorsa MySQL sunucunun kullandığı my.cnf dosyasına bu satırı ekleyin ve MySQL servisini restart edin.
Kod:
sql_mode=NO_ENGINE_SUBSTITUTION
Biraz araştırma yaptığımda bu konuda Türkçe kaynak olmadığını gördüm umarım bu kaynak birilerinin işine yarar.
kaynak alıntıdır: zbahadır