Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyelesaikan Ralat MySQL 1292: Nilai Datetime Salah Semasa Pengubahan Jadual?

Bagaimana untuk Menyelesaikan Ralat MySQL 1292: Nilai Datetime Salah Semasa Pengubahan Jadual?

DDD
DDDasal
2024-11-27 16:46:11832semak imbas

How to Resolve MySQL Error 1292: Incorrect Datetime Value During Table Alteration?

Ralat MySQL 1292: Nilai Masa Tarikh Salah

Dalam MySQL, cuba mengubah suai jenis data atau set aksara jadual boleh mengakibatkan "Salah nilai datetime" ralat. Senario ini timbul apabila data sedia ada bercanggah dengan jenis data atau pengekodan baharu.

Sebagai contoh, apabila mengimport data daripada pangkalan data dengan set aksara latin1 ke MySQL 5.7, yang menggunakan UTF-8, anda mungkin menghadapi ralat ini apabila cuba mengubah suai lajur tertentu.

Khususnya, jika lajur datetime mengandungi nilai tidak sah '0000-00-00 00:00:00', anda mungkin menghadapi masalah ini. Untuk menyelesaikannya, cuba langkah berikut:

  1. Sahkan jika terdapat sebarang baris dengan nilai datetime yang tidak sah:
SELECT * FROM users WHERE created = '0000-00-00 00:00:00';
  1. Cuba untuk mengemas kini yang tidak sah nilai kepada NULL menggunakan CAST fungsi:
UPDATE users SET created = NULL WHERE CAST(created AS CHAR(20)) = '0000-00-00 00:00:00';
  1. Setelah nilai yang tidak sah dikemas kini, anda boleh meneruskan dengan perubahan yang dimaksudkan:
ALTER TABLE users MODIFY first_name varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

Adalah penting untuk ambil perhatian bahawa Fungsi CAST membolehkan anda menukar nilai datetime kepada rentetan, yang kemudiannya boleh dibandingkan dengan nilai yang tidak sah dan dikemas kini kepada NULL tanpa menaikkan ralat.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL 1292: Nilai Datetime Salah Semasa Pengubahan Jadual?. 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