"RALAT 1067 (42000): Nilai Lalai Tidak Sah untuk 'created_at'" Diterangkan
Apabila cuba mengubah suai jadual dengan menambah yang baharu lajur, anda mungkin menghadapi ralat yang menyatakan: "ERROR 1067 (42000): Nilai lalai tidak sah untuk 'created_at'." Ralat ini kelihatan berlawanan dengan intuisi kerana anda tidak mengubah lajur 'created_at' itu sendiri.
Punca Punca
Isu ini berpunca daripada tetapan konfigurasi MySQL yang dikenali sebagai mod SQL. Khususnya, mod SQL "NO_ZERO_IN_DATE" dan "NO_ZERO_DATE". Mod ini mengehadkan nilai tarikh lalai dan cap masa untuk memasukkan kedua-dua komponen tarikh dan masa, tidak membenarkan nilai dengan komponen masa '00:00:00'.
Apabila anda mencipta jadual baharu, ia mewarisi mod SQL aktif pada masa penciptaan. Dalam kes di mana mod SQL ini didayakan, ia memberi kesan kepada nilai lalai untuk lajur cap masa seperti 'created_at'. Menambah lajur baharu pada jadual dengan mod SQL ini mengaktifkan percubaan untuk mengatasi nilai lalai sedia ada untuk 'created_at', yang tidak dibenarkan.
Resolusi
Untuk menyelesaikan isu ini, anda boleh mengenal pasti mod SQL aktif dengan menjalankan arahan:
show variables like 'sql_mode' ;
Jika Mod SQL "NO_ZERO_IN_DATE" dan "NO_ZERO_DATE" ada, anda boleh melumpuhkannya dengan menetapkan mod SQL untuk mengalih keluar sekatan ini. Anda boleh melakukan ini secara global sebagai pengguna root dengan arahan:
set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Selepas membuat perubahan yang diperlukan pada mod SQL, anda sepatutnya boleh menambah lajur baharu tanpa menghadapi ralat.
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'ERROR 1067 (42000): Nilai Lalai Tidak Sah untuk 'created_at'' Apabila Menambah Lajur dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!