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解决了这个问题