我正在研究自己的项目,但我有一个问题。
我用查询创建了一个简单的表:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8414f19fcd5f b.gcr.io/tensorflow/tensorflow:latest-devel "/bin/bash" 38 minutes ago Up 23 minutes 6006/tcp, 8888/tcp, 0.0.0.0:8888->9999/tcp test
当我尝试使用
添加新记录时$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)
)";
它返回错误
#1062 - 密钥'cod_barre'重复输入'2147483647'
但显然cod_barre不等于这个值。
如果我尝试使用UPDATE修改记录,它会修改除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)";
我使用php.ini
es ENGINE和InnoDB
作为char_set。
任何人都可以帮我找到错误吗?
答案 0 :(得分:1)
在你的情况下,你去INT最大2147483647 = 2^{31}-1
,因为4545415615456大于2147483647。
所以你真的插入了带有max 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)
)";