Rumah > pangkalan data > tutorial mysql > Mengapa Saya Mendapat MySQL ERROR 1067: Nilai Lalai Tidak Sah untuk 'created_at'?

Mengapa Saya Mendapat MySQL ERROR 1067: Nilai Lalai Tidak Sah untuk 'created_at'?

Patricia Arquette
Lepaskan: 2024-12-04 08:40:11
asal
933 orang telah melayarinya

Why Am I Getting MySQL ERROR 1067: Invalid Default Value for 'created_at'?

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:

  1. Sahkan Semasa sql_modes:

    show variables like 'sql_mode' ; 
    Salin selepas log masuk
  2. 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';
      Salin selepas log masuk
    • Tetapkan mod global secara kekal:

      SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
      Salin selepas log masuk
  3. Cuba Semula Menambah Lajur:

    ALTER TABLE investments ADD bank TEXT;
    Salin selepas log masuk

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan