"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.