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.