MySQL #1067 Invalid Default Value ve Strict Mode Hataları
Kısa yanıt: Bu hatalar, eski bir uygulamanın veya yedeğin, katı SQL modunda (STRICT_
Bu rehber kimin için: Eski uygulama taşıyan geliştiriciler · Gereken süre: 20 dakika · Seviye: İleri
Güncel veritabanı sunucuları, veri bütünlüğünü korumak için katı SQL modunu varsayılan olarak etkin tutar. Eski uygulamalar ise boş dize yerine sayı, ‘0000-00-00 00:00:00’ gibi geçersiz tarih veya tam belirtilmemiş GROUP BY sorguları kullanabilir. Bu uygulamalar eski sunucuda sorunsuz çalışırken yeni sunucuda hata verir.
Hataya göre çözüm
- #1067 Invalid default value: SQL dosyasında DEFAULT '0000-00-00 00:00:00' ifadelerini DEFAULT NULL veya DEFAULT CURRENT_
TIMESTAMP ile değiştirin. - #1366 Incorrect integer value: Uygulama sayısal sütuna boş dize gönderiyor; kodda değeri NULL veya 0 olarak gönderin.
- ONLY_
FULL_ SELECT listesindeki toplanmayan sütunları GROUP BY’a ekleyin (bu mod MySQL 5.7 ve sonrasında varsayılan olarak açıktır, MariaDB’de değildir). Yalnız MySQL’de geçerli bir seçenek olarak ANY_GROUP_ BY: VALUE() kullanın. - Oturum bazlı geçici çözüm: Uygulama bağlantısından sonra SET SESSION sql_mode = ‘NO_
ENGINE_ SUBSTITUTION’; çalıştırmak yalnızca o bağlantı için modu gevşetir. - İçe aktarma için: SQL dosyasının başına SET SESSION sql_mode = ''; satırı ekleyerek eski verileri içe aktarın, ardından tablo tanımlarını düzeltin.
- Uygulamayı güncelleyin: Kalıcı çözüm için uygulamanın güncel sürümüne geçin.
Sunucu genelinde kapatılabilir mi?
Paylaşımlı sunucularda sql_mode sunucu genelinde değiştirilemez; oturum bazlı ayar kullanılmalıdır. VPS’te my.cnf dosyasında sql_mode değerini değiştirebilirsiniz; ancak katı modu tamamen kapatmak sessiz veri kayıplarına neden olabileceğinden önerilmez.
Hâlâ çözülmediyse
İçe aktarma sırasında başka hatalar da alıyorsanız büyük SQL dosyası içe aktarma rehberindeki karakter seti ve collation çözümlerine bakın. Eski uygulamalar için özelleştirilmiş veritabanı ayarları gerekiyorsa VPS sunucu paketlerimiz esneklik sağlar.
Sık sorulan sorular
Hangi sürüm kullanılıyor?
SELECT VERSION(); sorgusu sunucu sürümünü gösterir.
WordPress bu hatayı verir mi?
Güncel WordPress katı modla uyumludur; hata genellikle eski eklentilerden gelir.
Bu hataları MariaDB’de de alır mıyım?
Kısmen. MariaDB’nin varsayılan SQL modunda STRICT_
İlgili rehberler
- Büyük SQL Dosyası İçe Aktarma (phpMyAdmin Limiti Aşımı)
- phpMyAdmin’de Güvenli SQL Sorgusu Çalıştırma Örnekleri
- Veritabanında Türkçe Karakter Sorunu (utf8mb4)
Bu rehber işinize yaradı mı?
Teşekkürler. Çözüm bulamadıysanız destek talebi açın veya [email protected] adresine yazın.