我正在做一个自己的项目,但是有一个问题。
我用查询创建了一个简单的表:
$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'
但显然cod_barre不等于该值。如果我尝试使用UPDATE修改记录,它将修改除cod_barre以外的所有值,这些值保持不变。默认情况下,php.ini
我使用InnoDB
es ENGINE并将其latin1_swedish_ci
用作char_set。谁能帮我找到错误?
在您的情况下,您转到INT最大2147483647 = 2^{31}-1
,因为4545415615456大于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)
)";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句