#Fix #SQL show error SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘255’ for key ‘PRIMARY’

Bug เล็กๆ ที่เกิดจากความประมาท โดยระบบตัวนี้จะมี id ที่เป็น PK ตั้งให้ auto increment แต่เนื่องจากไปตั้ง field type เป็นแบบ tinyint ไว้ มันรองรับแค่ 255 เท่านั้น พอมีรายการที่ 256 เข้ามามันเลยเพิ่มเข้าไม่ได้ แล้วแจ้งบอก Dupicate entry ที่เลข 255 มีการใช้ซ้ำแล้ว

โดยปกติถ้าไม่ได้ตั้ง Auto Increment ไว้ เราก็แค่เปลี่ยน ID ไปเป็นเลขอื่น แต่ในตัวอย่างนี้ คือไปขยาย field type ให้มีขนาดใหญ่ขึ้น โดยตั้งเป็น int เลยก็ได้ เปิด unsigned เพราะไม่มีเลขติดลบ

อ้างอิง

int, bigint, smallint, and tinyint (Transact-SQL)

Data type Range Storage
bigint -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807) 8 Bytes
int -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647) 4 Bytes
smallint -2^15 (-32,768) to 2^15-1 (32,767) 2 Bytes
tinyint 0 to 255 1 Byte

int, bigint, smallint, and tinyint (Transact-SQL) – MSDN – Microsoft

https://msdn.microsoft.com/en-us/library/ms187745.aspx