Persekitaran:
>pilih versi();
> 5.7.16
Soalan:
Terdapat dua medan dalam jadual, created_at
dan updated_at
Kedua-dua jenis medan ialah timestamp
created_at
Nilai lalai ialah CURRENT_TIMESTAMP
dan nilai lalai updated_at
ditetapkan kepada 0000-00-00 00:00:00
masalah berlaku. Sekarang, laksanakan pernyataan untuk mencipta jadual atau melaporkan ralat Berikut ialah kod ralat:
Ralat sintaks atau pelanggaran akses: 1067 Nilai lalai tidak sah untuk 'updated_at'
Jika anda menukar nilai lalai updated_at
kepada CURRENT_TIMESTAMP
, ia akan dilaksanakan dengan lancar, tetapi akan ada masalah lain di bawah Mysql5.7 tidak menyokong satu jadual Adakah terdapat dua medan cap masa
dengan nilai lalai CURRENT_TIMESTAMP
?
Jadi, sila tanya semua tuan, bagaimana untuk menyelesaikan masalah nilai lalai cap masa
ini? Serasi dengan kedua-dua versi tinggi dan rendah Mysql.
&^ - &^
Sistem 32-bit nampaknya berada pada tahun 2038. Gunakan sistem 64-bit. Juga, cuba simpan data dengan cap masa.
Melihat masalah ini dari perspektif keperluan medan kemas kini_at, kami benar-benar memahami bahawa medan ini harus digunakan untuk membentangkan masa kemas kini rekod.
Jika masa kemas kini mempunyai nilai lalai, tetapi nilai lalai bukanlah masa pangkalan data semasa yang dimasukkan semasa mengemas kini/menambah rekod (subjek menggunakan 0000-00-00 00:00:00), maka sebarang nilai selain daripada pangkalan data semasa masa akan digunakan. Maksud medan ini tidak wujud (data berlebihan/salah).
Tidak perlu menyimpan data yang sepadan dengan ralat dalam pangkalan data.
Ringkasnya, penyoal ingin melihat sama ada mungkin untuk tidak memberikan medan update_at nilai lalai?