Membetulkan Nilai Lalai Tidak Sah untuk Medan TIMESTAMP dalam MySQL
Apabila cuba mencipta jadual dengan medan TIMESTAMP dan menentukan nilai lalai ' 0000-00-00 00:00:00', anda mungkin menghadapi ralat "Nilai lalai tidak sah untuk 'create_date'." Ini selalunya disebabkan oleh tetapan Mod SQL pelayan MySQL.
Penjelasan
Mod SQL NO_ZERO_DATE menguatkuasakan ketegasan mengenai pengendalian tarikh sifar. Ia menghalang pemasukan '0000-00-00' sebagai tarikh yang sah, menganggapnya sebagai nilai yang tidak sah.
Penyelesaian
Untuk menyelesaikan ralat, anda boleh sama ada :
Lumpuhkan Mod SQL NO_ZERO_DATE:
<code class="mysql">SET SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION';</code>
Gunakan pilihan IGNORE untuk membenarkan pemasukan tarikh sifar:
<code class="mysql">CREATE TABLE IF NOT EXISTS `erp`.`je_menus` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `name` VARCHAR(100) NOT NULL , `description` VARCHAR(255) NOT NULL , `live_start_date` DATETIME NULL DEFAULT NULL , `live_end_date` DATETIME NULL DEFAULT NULL , `notes` VARCHAR(255) NULL , `create_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' IGNORE, `created_by` INT(11) NOT NULL , `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `updated_by` INT(11) NOT NULL , `status` VARCHAR(45) NOT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB;</code>
Sebaik sahaja anda membuat pelarasan ini, anda sepatutnya berjaya mencipta jadual dengan nilai lalai yang ditentukan untuk medan TIMESTAMP.
Atas ialah kandungan terperinci Mengapakah saya mendapat \'Nilai lalai tidak sah untuk \'create_date\'\' apabila menggunakan `0000-00-00 00:00:00` sebagai lalai untuk medan TIMESTAMP dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!