Php #1062-重复输入

Php #1062-重复输入,php,mysql,duplicates,record,Php,Mysql,Duplicates,Record,我正在做我自己的一个项目,但我有一个问题 我使用查询创建了一个简单的表: $sql_art = "CREATE TABLE articoli ( id INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY, cod_int VARCHAR(6) NOT NULL, nome VARCHAR(50) NOT NULL, descr VARCHAR(100) NULL, cod_barre INT(20) NOT NULL,

我正在做我自己的一个项目,但我有一个问题

我使用查询创建了一个简单的表:

$sql_art = "CREATE TABLE articoli (
    id INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    cod_int VARCHAR(6) NOT NULL,
    nome VARCHAR(50) NOT NULL,
    descr VARCHAR(100) NULL,
    cod_barre INT(20) NOT NULL,
    prezzo INT(5) NULL,
    note VARCHAR(100) NULL,
    reg_date TIMESTAMP,
    UNIQUE (cod_barre)
)";
当我尝试使用添加新记录时

$sql_ins = "INSERT INTO `gestionale_db`.`articoli` 
(`id`, `cod_int`, `nome`, `descr`, `cod_barre`, `prezzo`, `note`, `reg_date`) 
VALUES 
(NULL, 'A001', 'Cazzilli', 'ancora caldi', '4545415615456',
   '215', 'su tisi', CURRENT_TIMESTAMP)";
它返回错误

#1062-钥匙“cod_barre”的重复条目“2147483647”

但很明显,科德巴尔不等于这个值。 如果我尝试用UPDATE修改记录,它会修改除cod_barre之外的所有保持不变的值。 默认情况下,在
php.ini
中,我使用
InnoDB
es引擎和
latin1\u swedish\u ci
作为字符集。
有人能帮我找到错误吗?

在您的情况下,您可以转到INT max
2147483647=2^{31}-1
,因为45415615456大于2147483647

所以您确实插入了具有最大int值的行。 您需要创建此表以修复错误:

$sql_art = "CREATE TABLE articoli (
    id INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    cod_int VARCHAR(6) NOT NULL,
    nome VARCHAR(50) NOT NULL,
    descr VARCHAR(100) NULL,
    cod_barre BIGINT(20) NOT NULL,
    prezzo INT(5) NULL,
    note VARCHAR(100) NULL,
    reg_date TIMESTAMP,
    UNIQUE (cod_barre)
)";

对于0000048921这样的数字,所有的首字母0都被删除了,或者65412865这样的数字小于2147483647,我也有同样的错误。然而,它是有效的。谢谢!@CodeGodie可能重复:对于mysql INT(x)=INT always(我的意思是4个字节)@CodeGodie是不同的,或者我无法理解,alexander.polomodov解决了这个问题