Rumah >pangkalan data >tutorial mysql >Mengapa Menambah Lajur Menghasilkan Ralat 'Nilai Lalai Tidak Sah untuk 'created_at'' dalam MySQL?

Mengapa Menambah Lajur Menghasilkan Ralat 'Nilai Lalai Tidak Sah untuk 'created_at'' dalam MySQL?

DDD
DDDasal
2024-12-02 11:48:10903semak imbas

Why Does Adding a Column Result in an

Nilai Lalai Tidak Sah untuk Created_At

Masalah:

Apabila cuba mengubah jadual dengan menambah lajur baharu, anda akan menemui satu ralat:

ERROR 1067 (42000): Invalid default value for 'created_at'

walaupun tidak mengubah suai mana-mana lajur cap masa.

Penyelesaian:

Ralat berasal daripada sql_modes. Untuk menyelesaikannya:

  1. Semak Mod SQL:
show variables like 'sql_mode' ;
  1. Lumpuhkan Mod Bermasalah:

Alih keluar mod berikut daripada sql_mode:

NO_ZERO_IN_DATE
NO_ZERO_DATE

Mod ini hadir secara lalai dalam versi MySQL yang lebih baharu.

Tetapan Global:

Untuk perubahan seluruh sistem, laksanakan yang berikut sebagai akar:

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

Tambahan Nota:

  • Lajur baharu kini boleh ditambah tanpa mencetuskan ralat.
  • Jika anda ingin menggunakan nilai lalai NOT NULL untuk created_at, anda boleh menentukannya secara eksplisit :
ALTER TABLE investments ADD bank TEXT DEFAULT NOT NULL;

Atas ialah kandungan terperinci Mengapa Menambah Lajur Menghasilkan Ralat 'Nilai Lalai Tidak Sah untuk 'created_at'' dalam MySQL?. 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