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 NULL
tempat nilainya 0
berada. Permintaan pembaruan saya seperti ini:
UPDATE myTable SET myValue = NULL WHERE myValue = 0;
Sekarang, karena tipe aktualnya myValue
adalah VARCHAR(255)
ini memberikan peringatan:
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'value xyz' |
+---------+------+-----------------------------------------------+
Dan sekarang myTable
praktis kosong, karena myValue
sekarang NULL
untuk 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 *