MySQL-主键重复条目(但实际上不是…)[重复]

问题描述 投票:0回答:1

我每天都会收到带有CSV文件的电子邮件,并且具有自动将文件上传到服务器的代码,然后根据CSV文件中第1行的数据创建一个具有列名的MySQL表。创建表之后,该脚本旨在将100条左右的下一行记录导入表中,其中“ Survey ID”列是唯一的值,也可用作我的PRIMARY KEY。除“调查ID”外,所有其他列均为text(999),没有其他列充当主要,唯一,自动递增等。

现在的问题是,每次导入记录时,脚本都会向我抛出以下错误:

错误:将第2行写入表时出错。 [重复密钥“ PRIMARY”的条目“ 2147483647”]

第一条记录可以很好地导入,但是所有后续记录均无法导入,并引用相同的错误和相同的'2147483647'键,这是第一条记录的调查ID。每个记录在文件上都有一个唯一的“调查ID”号,我可以看到每个记录的“ INSERT”显示一个唯一的ID,因此,出现错误的唯一原因必须来自表/列配置。

由于所有内容均由脚本自动执行,因此,一旦创建了列标题以将'调查ID'指定为主要对象并根据需要设置结构,我便运行以下查询。

$sql = "ALTER TABLE `" . $temp_table . "` CHANGE `Survey ID` `Survey ID` INT(11) NULL";
if(!$result = $db->query($sql)){ die('Error while changing Survey ID to INTEGER [' . $db->error . ']'); }

$sql = "ALTER TABLE `" . $temp_table . "` ADD PRIMARY KEY(`Survey ID`)";
if(!$result = $db->query($sql)){ die('Error setting Survey ID as PRIMARY [' . $db->error . ']'); }

$sql = "ALTER TABLE `". $temp_table . "` CHANGE `Survey ID` `Survey ID` INT(11) NOT NULL AUTO_INCREMENT";
if(!$result = $db->query($sql)){ die('Error while changing Survey ID to INTEGER [' . $db->error . ']'); }

$sql = "ALTER TABLE `". $temp_table . "` ADD UNIQUE(`Survey ID`);";
if(!$result = $db->query($sql)){ die('Error setting Survey ID as UNIQUE [' . $db->error . ']'); }

我花了几个小时来处理NULL,NOT NULL,AUTO_INCREMENT,UNIQUE,PRIMARY等,但都无济于事,错误仍然存​​在。

感谢任何人提供指导,谢谢。

php mysql
1个回答
1
投票

您已达到最大int值。您可以改用bigint:

$sql = "ALTER TABLE `" . $temp_table . "` MODIFY COLUMN `Survey ID` BIGINT PRIMARY KEY NOT NULL";
if(!$result = $db->query($sql)){ die('Error while changing Survey ID to BIGINT [' . $db->error . ']'); }

© www.soinside.com 2019 - 2024. All rights reserved.