Php MySQL-主键的重复项(但实际上不是…)

Php MySQL-主键的重复项(但实际上不是…),php,mysql,Php,Mysql,我每天都会收到带有CSV文件的电子邮件,并有代码自动将该文件上传到我的服务器,然后根据CSV文件第1行的数据创建一个具有列名的MySQL表。创建表之后,脚本将把大约100行的下一行记录导入到表中,列“Survey ID”是一个唯一的值,也是我的主键。 除“测量ID”之外的所有其他列都是文本(999),没有其他列充当主列、唯一列、自动增量列等 现在的问题是,每次导入记录时,脚本都会抛出以下错误: 错误:将第2行写入表时出错。[重复 键“PRIMARY”的条目“2147483647”] 第一条记录可

我每天都会收到带有CSV文件的电子邮件,并有代码自动将该文件上传到我的服务器,然后根据CSV文件第1行的数据创建一个具有列名的MySQL表。创建表之后,脚本将把大约100行的下一行记录导入到表中,列“Survey ID”是一个唯一的值,也是我的主键。 除“测量ID”之外的所有其他列都是文本(999),没有其他列充当主列、唯一列、自动增量列等

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

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

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

由于所有内容都是由脚本自动完成的,因此在创建列标题后,我将运行以下查询,以将“Survey 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、notnull、AUTO_INCREMENT、UNIQUE、PRIMARY等,但都没有用,错误仍然存在


如果有任何人有任何指导,谢谢。

您已达到最大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 . ']'); }


2147483647
是a的最大值。您可能已经达到了最大限度。我认为这对您很有用:使用
BIGINT
而不是
INT
,这可能会帮助您谢谢,就是这样。