Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat \'Nilai Lalai Tidak Sah untuk Medan \'create_date\'' dalam MySQL dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Saya Mendapat \'Nilai Lalai Tidak Sah untuk Medan \'create_date\'' dalam MySQL dan Bagaimana Saya Boleh Membetulkannya?

DDD
DDDasal
2024-10-26 22:41:30499semak imbas

Why Am I Getting

"Nilai Lalai Tidak Sah untuk Medan 'create_date': Memahami NO_ZERO_DATE SQL Mode"

Dalam pernyataan ciptaan SQL baru-baru ini, anda menghadapi ralat "'Nilai lalai tidak sah untuk 'create_date'" untuk SQL berikut:

<code class="sql">CREATE  TABLE IF NOT EXISTS `erp`.`je_menus` (
    ...
    `create_date` TIMESTAMP NOT NULL DEFAULT  '0000-00-00 00:00:00',
    ...
) </code>

Untuk menyelesaikan ralat ini, adalah penting untuk memahami Mod SQL MySQL, khususnya tetapan NO_ZERO_DATE. Tetapan ini tidak membenarkan penggunaan '0000-00-00' sebagai tarikh yang sah dalam mod ketat. Ini berlaku kerana SQL menganggap nilai boolean sebagai nombor (cth., TRUE = 1, FALSE = 0) dan menyimpan tarikh sebagai integer yang mewakili bilangan hari sejak titik rujukan. Akibatnya, penggunaan '0000-00-00' bercanggah dengan nilai '0' yang digunakan untuk nilai boolean.

Untuk menangani isu ini, pertimbangkan pilihan berikut:

  • Lumpuhkan mod NO_ZERO_DATE: Dalam pernyataan SQL anda, masukkan pernyataan 'SET SQL_MODE = "NO_ZERO_IN_DATE";' sebelum membuat jadual. Ini melumpuhkan mod NO_ZERO_DATE buat sementara waktu, membolehkan anda mentakrifkan '0000-00-00' sebagai lalai untuk create_date.
  • Gunakan nilai lalai yang sah: Gantikan '0000-00-00 00 :00:00' dengan tarikh lalai yang sah dalam pernyataan SQL, seperti 'CURRENT_TIMESTAMP' atau NULL, bergantung pada tingkah laku yang diingini.
  • Gunakan pilihan ABAIKAN: Jika anda benar-benar memerlukan untuk menggunakan '0000-00-00 00:00:00', sertakan pilihan IGNORE dalam pernyataan SQL. Walau bagaimanapun, ini boleh membawa kepada potensi ketidakkonsistenan data dan biasanya tidak disyorkan.

Atas ialah kandungan terperinci Mengapa Saya Mendapat \'Nilai Lalai Tidak Sah untuk Medan \'create_date\'' dalam MySQL dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn