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

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

從網路下載台股券商分點買賣資料並寫入MySQL時遇到錯誤。可能原因包括:主鍵出現Null值、資料庫編碼不區分大小寫、使用浮點數欄位作為主鍵等。這些因素都可能導致資料重複而無法寫入。

當我從網路上下載台股的券商分點買賣資料,並使用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,資料庫通常不會阻止你用浮點數的欄位當成主鍵,但強烈不建議這麼做。

🚀 以每年 5 美元解鎖無廣告體驗

✓ 14 天免費試用 ✓ 隨時取消

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *