Nilai default tidak valid untuk 'dateAdded'


91

Saya mendapat masalah bodoh dengan SQL yang tidak bisa saya perbaiki.

ALTER TABLE `news` 
 ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT,
 TAMBAHKAN KUNCI UTAMA (`dateAdded`)

Kesalahan:

(#1067)Invalid default value for 'dateAdded'

Ada yang bisa membantu saya?


9
Ini mungkin pertanyaan yang bodoh, tapi kenapa kamu AUTO_INCREMENT DATETIME?
jave.

Jawaban:


138

CURRENT_TIMESTAMPhanya dapat diterima di TIMESTAMPlapangan.DATETIMEbidang harus dibiarkan dengan nilai default null, atau tanpa nilai default sama sekali - nilai default harus berupa nilai konstan, bukan hasil ekspresi.

dokumen yang relevan: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

Anda dapat menyiasatinya dengan menyetel pemicu pasca-penyisipan pada tabel untuk mengisi nilai "sekarang" pada setiap rekaman baru.


70
Sepertinya pada mysql 5.6.5, Anda dapat menggunakan CURRENT_TIMESTAMP dengan bidang DATETIME. Lihat dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
Frank Schwieterman

2
Terima kasih Frank, menemukan masalah ini saat mencoba mengimpor db yang telah diekspor dari xampp terbaru ke yang sebelumnya.
HCD

HCD, Frank ... menemukan masalah yang sama saat mengekspor dari MariaDb 10.x ke MariaDB 5.5 ... terima kasih
Aukhan

1
Kesalahan ini juga terjadi di mariadb 5.5. Tingkatkan ke mariadb 10 dan penyelesaiannya. Terima kasih Frank
Samuel Tesler


17

Perhatikan juga saat menentukan DATETIMEas DATETIME(3)atau like pada MySQL 5.7.x, Anda juga harus menambahkan nilai yang sama untuk CURRENT_TIMESTAMP(3). Jika tidak, itu akan terus memunculkan ' Nilai default tidak valid '.


1
Ini memecahkan masalah saya di 5.7.x. Bidang datetime saya didefinisikan sebagai datetime (6) dan menggunakan CURRENT_TIMESTAMP (6) memecahkan masalah
Brad

1
Ini sangat penting untuk diperhatikan.
Mateus Felipe

1

Saya memiliki masalah yang sama, setelah perbaikan menyelesaikan masalah saya.

  • Pilih Jenis sebagai 'TIMESTAMP'

  • JANGAN MASUKKAN APA PUN DI BIDANG PANJANG / NILAI. TETAP KOSONG

  • Pilih CURRENT_TIMESTAMP sebagai nilai Default.

Saya menggunakan MySQL ver 5.5.56


0

Saya memiliki mysql versi 5.6.27 di LEMP dan CURRENT_TIMESTAMP saya karena nilai default berfungsi dengan baik.


0

mysql versi 5.5 menetapkan nilai default datetime sebagai CURRENT_TIMESTAMP akan melaporkan kesalahan Anda dapat memperbarui ke versi 5.6, itu menetapkan nilai default waktu sebagai CURRENT_TIMESTAMP


0

Ubah tipe dari datetime ke timestamp dan itu akan berhasil! Saya memiliki masalah yang sama untuk mysql 5.5.56-MariaDB - Server MariaDB Semoga dapat membantu ... maaf jika dikosongkan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.