MySQL / phpMyAdmin在未出现重复的情况下在UNIQUE列上抛出重复错误

slmsl1lt  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(174)

我有下表:

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的值时,显示以下错误,警告UNIQUE列中存在重复值,即使没有相同值的值(该表只有4行,所以我手动检查了)。我还注意到,当我试图将值设置为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,之后问题就消失了,但我真的很想弄清楚为什么会发生这种情况,以防将来遇到类似的问题。

lhcgjxsq

lhcgjxsq1#

您的pret_user_telegraph_chat_id太小了. The max value for INT is 2147483647,尽管您已经指定了15个位置。您将需要BIGINT来代替

相关问题