"Tarih Eklendi" için geçersiz varsayılan değer


91

SQL ile çözemediğim aptal bir sorunum var.

ALTER TABLE `haberler` 
 EKLE "tarih Eklendi" DATETIME BOŞ DEĞİL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT,
 BİRİNCİL ANAHTAR EKLE ("tarih eklendi")

Hata:

(#1067)Invalid default value for 'dateAdded'

Birisi bana yardım edebilir mi?


9
Bu aptalca bir soru olabilir, ama neden yapıyorsun AUTO_INCREMENT DATETIME?
jave.web

Yanıtlar:


138

CURRENT_TIMESTAMPyalnızca TIMESTAMPalanlarda kabul edilebilir . DATETIMEalanlar ya boş bir varsayılan değerle bırakılmalı ya da hiç varsayılan değer olmamalıdır - varsayılan değerler bir ifadenin sonucu değil, sabit bir değer olmalıdır.

ilgili dokümanlar: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

Herhangi bir yeni kayıtta "şimdi" değerini doldurmak için tabloda bir ekleme sonrası tetikleyici ayarlayarak bu sorunu çözebilirsiniz.


70
Mysql 5.6.5'ten itibaren, CURRENT_TIMESTAMP'ı DATETIME alanları ile kullanabilirsiniz. Bkz. Dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
Frank Schwieterman

2
Teşekkürler Frank, dışa aktarılan bir db'yi en son xampp'den önceki bir db'ye aktarmaya çalışırken bu sorunu buldu.
HCD

HCD, Frank ... aynı sorunu MariaDb 10.x'ten MariaDB 5.5'e aktarırken buldu ... teşekkürler
Aukhan

1
Bu hata mariadb 5.5'te de olur. Mariadb 10'a yükseltin ve çözüldü. Teşekkürler Frank
Samuel Tesler


17

Ayrıca , MySQL 5.7.x üzerinde DATETIMEolarak DATETIME(3)veya benzerini belirtirken, aynı değeri için de eklemeniz gerektiğini unutmayın CURRENT_TIMESTAMP(3). Değilse, ' Geçersiz varsayılan değer ' atmaya devam edecektir .


1
Bu, 5.7.x'te benim için sorunu çözdü. Tarih-saat alanlarım tarih saat (6) olarak tanımlandı ve CURRENT_TIMESTAMP (6) kullanmak sorunu çözdü
Brad

1
Bu oldukça kayda değer.
Mateus Felipe

1

Aynı sorunu yaşadım, aşağıdaki düzeltme sorunumu çözdü.

  • Türü 'TIMESTAMP' olarak seçin

  • UZUNLUK / DEĞERLER ALANINA HİÇBİR ŞEY GİRMEYİN. BOŞ TUTUN

  • Varsayılan değer olarak CURRENT_TIMESTAMP seçin.

MySQL ver 5.5.56 kullanıyorum


0

Varsayılan değer olarak LEMP ve CURRENT_TIMESTAMP üzerinde mysql 5.6.27 sürümüne sahibim.


0

mysql sürüm 5.5, tarih saat varsayılan değerini CURRENT_TIMESTAMP olarak ayarladı, sürüm 5.6'ya güncelleyebileceğiniz hata raporu olacak, tarih saat varsayılan değerini CURRENT_TIMESTAMP olarak ayarladı


0

Türü tarih saatinden zaman damgasına değiştirin ve işe yarayacaktır! Mysql 5.5.56-MariaDB - MariaDB Sunucusu için de aynı sorunu yaşadım - Umarım yardımcı olabilir ...


0

Ben değiştirerek mayın çözüldü DATEiçinDATETIME

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.