Apa itu pada dasarnya
Ini sintaks yang salah yang menyebabkan MySQL berpikir Anda mencoba melakukan sesuatu dengan kolom atau parameter yang memiliki tipe "DOUBLE" yang salah.
Belajarlah dari kesalahan saya
Dalam kasus saya, saya memperbarui kolom varchar dalam pengaturan tabel NULLtempat nilainya 0berada. Permintaan pembaruan saya seperti ini:
UPDATE myTable SET myValue = NULL WHERE myValue = 0;
Sekarang, karena tipe aktualnya myValueadalah VARCHAR(255)ini memberikan peringatan:
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'value xyz' |
+---------+------+-----------------------------------------------+
Dan sekarang myTablepraktis kosong, karena myValuesekarang NULLuntuk SETIAP BARIS dalam tabel! Bagaimana ini bisa terjadi?
* Menjerit internal *
Lebih dari 30rb baris sekarang memiliki data yang hilang.
* Menjerit internal meningkat *
Syukurlah untuk backup. Saya dapat memulihkan semua data.
* Intensitas menjerit internal lebih rendah *
Kueri yang diperbaiki adalah sebagai berikut:
UPDATE myTable SET myValue = NULL WHERE myValue = '0';
^^^
Quotation here!
Saya berharap ini lebih dari sekedar peringatan sehingga tidak terlalu berbahaya untuk melupakan kutipan itu.
* Akhiri menjerit internal *