Menyelesaikan masalah MySQL ERROR 1067: Nilai Lalai Tidak Sah untuk 'created_at' Semasa Menambah Lajur Baharu
Percubaan untuk mengubah jadual dengan menambah yang baharu lajur boleh mengakibatkan ralat "ERROR 1067 (42000): Nilai lalai tidak sah untuk 'created_at'". Ralat ini biasanya berlaku apabila mengubah lajur cap masa; walau bagaimanapun, ia juga boleh timbul apabila menambah lajur bukan cap masa.
Punca:
Ralat disebabkan oleh tetapan sql_modes MySQL. Khususnya, mod "NO_ZERO_IN_DATE" dan "NO_ZERO_DATE" menghalang nilai cap waktu lalai '0000-00-00' dan '00:00:00' daripada disimpan dalam lajur create_at dan updated_at.
Penyelesaian :
Untuk menyelesaikan ralat, alih keluar Mod "NO_ZERO_IN_DATE" dan "NO_ZERO_DATE" daripada tetapan sql_modes.
Langkah:
Sahkan Semasa sql_modes:
show variables like 'sql_mode' ;
Alih Keluar Mod Menyinggung:
Lumpuhkan sementara mod untuk semasa sesi:
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Tetapkan mod global secara kekal:
SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Cuba Semula Menambah Lajur:
ALTER TABLE investments ADD bank TEXT;
Nota:
Sql_mode lalai dalam versi MySQL yang lebih baharu termasuk "NO_ZERO_IN_DATE" dan "NO_ZERO_DATE "mod. Oleh itu, adalah penting untuk sentiasa menyemak tetapan sql_modes dan membuat pelarasan yang diperlukan apabila menghadapi ralat ini.
Atas ialah kandungan terperinci Mengapa Saya Mendapat MySQL ERROR 1067: Nilai Lalai Tidak Sah untuk 'created_at'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!