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
835 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!

sumber:php.cn
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