插入資料至MySQL資料庫時,沒有重複資料列卻顯示1062 – Duplicate Entry

MySQL Threw "1062 - Duplicate Entry" Even There Are Not Duplicated Rows

當我從網路上下載台股的券商分點買賣資料,並使用Python insert至MySQL出資料庫時,MySQL回傳以下錯誤訊息:

1062 – Duplicate entry ‘2022-02-10-1712-116M-29.65’ for key ‘PRIMARY

即使使用Pandas重覆確認後,仍然看不出哪裡有重複資料,仔細一查才找到幾個線索,以下一一列舉。

Null

理論上Primary Key是不允許Null的,因此Null可能會導致insert出錯。

編碼

有些資料庫的編碼方式是不區分大小寫的(case-insensitive),這也是我在寫入資料庫時會出錯的原因。

是否使用Float Column當成Primary Key

根據should we use float as primary key in sql-server,資料庫通常不會阻止你用浮點數的欄位當成主鍵,但強烈不建議這麼做。

搭載商業思維的資料科學家,工業設計系畢業,曾任職知名品牌行銷企劃。下班後寫機器學習模型,寫網站,也寫文章。興趣是把Side Project當成創業題目來玩,把人生當成遊戲破關。