簡體   English   中英

MySQL / phpMyAdmin 在沒有發生口是心非的情況下在 UNIQUE 列上拋出口是心非的錯誤

[英]MySQL / phpMyAdmin throws duplicity error on UNIQUE column when no duplicity occurs

我有下表:

CREATE TABLE pret_user (
    pret_user_index INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    pret_user_fname VARCHAR(250) NOT NULL,
    pret_user_lname VARCHAR(250) NOT NULL,
    pret_user_email VARCHAR(250) NOT NULL,
    pret_user_telegram_subscribe_token_hash VARCHAR(64) UNIQUE,
    pret_user_telegram_subscribe_token_hash_valid_until INT(15),
    pret_user_telegram_chat_id INT(15) UNIQUE,
    pret_user_telegram_subscribed TINYINT(1) NOT NULL DEFAULT 0
);

當我嘗試手動更新pret_user_telegram_chat_id的值時,即使沒有具有相同值的值(該表只有 4 行,所以我手動檢查),也會顯示以下錯誤警告 UNIQUE 列中的重復值。 我還注意到,當我嘗試將值設置為5163196961時,警告是關於值2147483647的。 任何關於可能導致這種情況的想法將不勝感激!

SQL:

UPDATE `d28748_admin`.`pret_user`
SET    `pret_user_telegram_chat_id` = '5163196931` 
WHERE  `pret_user`.`pret_user_index` = 2

錯誤:

#1062 - Duplicate entry '2147483647' for key 'pret_user_telegram_chat_id'

錯誤截圖

為了解決這個問題,我暫時將列切換為 VARCHAR,之后問題就消失了,但我真的很想弄清楚為什么會發生這種情況,以防將來遇到類似的問題。

您的 pret_user_telegram_chat_id 太小了。 INT 的最大值是 2147483647 ,即使您指定了 15 個點。 你會想要 BIGINT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM