Hata, en son MYSQL 5.7 belgelerine göre katı mod olabilen sql modundan kaynaklanmaktadır.
MySQL Belgeleri 5.7 diyor ki :
Katı mod, sunucunun geçerli bir tarih olarak '0000-00-00'e izin verip vermediğini etkiler: Katı mod etkin değilse,' 0000-00-00'e izin verilir ve eklemeler hiçbir uyarı üretmez. Katı mod etkinleştirilirse, '0000-00-00'e izin verilmez ve IGNORE da verilmediği sürece eklemeler bir hata oluşturur. INSERT IGNORE ve UPDATE IGNORE için, '0000-00-00'e izin verilir ve ekler bir uyarı oluşturur.
MYSQL modunu kontrol etmek için
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session
STRICT_TRANS_TABLES modu devre dışı bırakılıyor
Ancak biçime izin vermek için 0000-00-00 00:00:00
mysql yapılandırma dosyasında veya komutla STRICT_TRANS_TABLES modunu devre dışı bırakmanız gerekir
Komutla
SET sql_mode = '';
veya
SET GLOBAL sql_mode = '';
Anahtar kelimeyi kullanmak GLOBAL
süper öncelikler gerektirir ve o andan itibaren tüm istemcilerin bağlandığı işlemleri etkiler.
Yukarıdaki çalışmıyorsa, gidin /etc/mysql/my.cnf
(ubuntu'ya göre) ve yorum yapınSTRICT_TRANS_TABLES
Kalıcı sunucu başlangıçta sql modunu ayarlamak istiyorsanız Ayrıca, ardından dahil SET sql_mode=''
yılında my.cnf
Linux veya MacOS üzerinde. Windows için bunun my.ini
dosyada yapılması gerekir .
Not
Ancak MYSQL 5.6'da varsayılan olarak katı mod etkinleştirilmemiştir. Bu yüzden başına hatayı üretmez MYSQL 6 belgelerine diyor
MySQL, "sahte tarih" olarak "0000-00-00" "sıfır" değerini kaydetmenize izin verir. Bu, bazı durumlarda NULL değerleri kullanmaktan daha uygundur ve daha az veri ve dizin alanı kullanır. '0000-00-00'e izin vermemek için NO_ZERO_DATE SQL modunu etkinleştirin.
GÜNCELLEME
@ Dylan-Su tarafından dediği gibi hata konusuyla ilgili olarak:
Bunun, ürünün daha da geliştirilmesine bağlı olarak bazı şeylerin değişmesi nedeniyle MYSQL'in zaman içinde gelişmesi gibi bir hata olduğunu sanmıyorum.
Ancak NOW()
işlevle ilgili başka bir hata raporum var
Tarih ve saat alanı varsayılan ŞİMDİ kabul etmiyor ()
Başka Bir Yararlı not [bkz . TIMESTAMP ve DATETIME için Otomatik Başlatma ve Güncelleme ]
MySQL 5.6.5'ten itibaren, TIMESTAMP ve DATETIME sütunları otomatik olarak başlatılabilir ve geçerli tarih ve saate (yani, geçerli zaman damgasına) göre güncellenebilir. 5.6.5'ten önce, bu yalnızca TIMESTAMP ve tablo başına en fazla bir TIMESTAMP sütunu için geçerlidir. Aşağıdaki notlar önce MySQL 5.6.5 ve üstü için otomatik başlatma ve güncellemeyi, ardından 5.6.5'ten önceki sürümler için farklılıkları açıklar.
NO_ZERO_DATE İle İlgili Güncelleme
MySQL 5.7.4 itibariyle bu mod kullanımdan kaldırılmıştır. Önceki sürüm için, yapılandırma dosyasındaki ilgili satırı yorumlamanız gerekir. NO_ZERO_DATE tarihinde MySQL 5.7 belgelerine bakın
NULL
bunun için.