แต่พอสั่งคำสั่งเพื่อ insert record เข้าไป โดยค่าของ id ผมให้เป็น '' (single quote สองอัน) ที่เป็นค่าว่าง
ปรากฎว่ามันไม่ยอมให้ใส่ และฟ้องว่า
#1366 - Incorrect integer value: '' for column 'id' at row 1
โดยสาเหตุเกิดจากการตั้งค่า mode ของ sql ให้เป็น STRICT_TRANS_TABLES (ซึ่งจริงๆแล้วเป็นค่า default ที่ตั้งมาไว้ตั้งแต่ตอนแรก)
วิธีแก้
วิธีแรก: ให้ใส่เป็น NULL แทนที่จะเป็น ''
วิธีที่สอง: ให้ใช้คำสั่ง INSERT IGNORE แทน INSERT เฉยๆ และสามารถใส่ค่าเป็น '' เฉยๆได้
วิธีที่สาม: ยกเลิก STRICT_TRANS_TABLE โดยแก้ที่ไฟล์ my.ini (windows) หรือ my.cnf (linux) ตรง sql-mode ให้ลบ STRICT_TRANS_TABLE ออก
ระบบที่ทดสอบ
MySQL: 5.0.51b
Apache: 2.2
OS: Windows XP SP2
2 ความคิดเห็น:
บทความมีประโยชน์มากคับ ใช้วิธีที่ 2 แก้ได้คับ ขอบคุณมากคับๆ
ขอบคุณมากๆค่ะ มีประโยชน์มาก เราใช้วืธี่ที่2
แสดงความคิดเห็น