หน้าเว็บ

วันพุธที่ 17 กันยายน พ.ศ. 2551

#1366 - Incorrect integer value: '' for column 'id' at row 1 โดยเป็น auto_increment

ผมใช้ MySQL แล้วมีการสร้าง table ซึ่งมี field ที่เป็น id ที่เป็น auto_increment

แต่พอสั่งคำสั่งเพื่อ 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 ความคิดเห็น:

Mazzard กล่าวว่า...

บทความมีประโยชน์มากคับ ใช้วิธีที่ 2 แก้ได้คับ ขอบคุณมากคับๆ

Unknown กล่าวว่า...

ขอบคุณมากๆค่ะ มีประโยชน์มาก เราใช้วืธี่ที่2