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?
AUTO_INCREMENT
DATETIME
?Jawaban:
CURRENT_TIMESTAMP
hanya dapat diterima diTIMESTAMP
lapangan.DATETIME
bidang 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.
sumber
CURRENT_TIMESTAMP
adalah versi khusus dan sekarang diizinkan untukDATETIME
kolom pada versi 5.6.Lihat dokumen MySQL .
sumber
Perhatikan juga saat menentukan
DATETIME
asDATETIME(3)
atau like pada MySQL 5.7.x, Anda juga harus menambahkan nilai yang sama untukCURRENT_TIMESTAMP(3)
. Jika tidak, itu akan terus memunculkan ' Nilai default tidak valid '.sumber
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
sumber
Saya memiliki mysql versi 5.6.27 di LEMP dan CURRENT_TIMESTAMP saya karena nilai default berfungsi dengan baik.
sumber
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
sumber
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
sumber