มันคืออะไร
เป็นไวยากรณ์ที่ไม่ถูกต้องที่ทำให้ MySQL คิดว่าคุณกำลังพยายามทำบางอย่างกับคอลัมน์หรือพารามิเตอร์ที่มีประเภท "DOUBLE" ไม่ถูกต้อง
เรียนรู้จากความผิดพลาดของฉัน
ในกรณีของฉันฉันปรับปรุงคอลัมน์ varchar ในการตั้งค่าตารางNULL
ที่ค่า0
ยืนอยู่ ข้อความค้นหาที่อัปเดตของฉันเป็นเช่นนี้:
UPDATE myTable SET myValue = NULL WHERE myValue = 0;
ตอนนี้เนื่องจากประเภทที่แท้จริงของmyValue
สิ่งVARCHAR(255)
นี้จะให้คำเตือน:
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'value xyz' |
+---------+------+-----------------------------------------------+
และตอนนี้myTable
ว่างเปล่าจริงเพราะmyValue
ตอนนี้NULL
สำหรับทุกแถวในตาราง! มันเกิดขึ้นได้อย่างไร?
* กรีดร้องภายใน *
ตอนนี้แถวมากกว่า 30k มีข้อมูลขาดหายไป
* การกรีดร้องภายในทวีความรุนแรงมาก *
ขอบคุณพระเจ้าสำหรับการสำรองข้อมูล ฉันสามารถกู้คืนข้อมูลทั้งหมดได้
* ความเข้มกรีดร้องภายในลดลง *
แบบสอบถามที่ถูกต้องมีดังนี้:
UPDATE myTable SET myValue = NULL WHERE myValue = '0';
^^^
Quotation here!
ฉันหวังว่านี่เป็นมากกว่าคำเตือนดังนั้นจึงเป็นอันตรายน้อยกว่าที่จะลืมคำพูดเหล่านั้น
* สิ้นสุดการกรีดร้องภายใน *