php - 尽管没有重复项,但在 mySQL/phpMyAdmin 中收到 #1062 重复错误

标签 php mysql database phpmyadmin key

我目前有一个名为 Spreadsheet 的数据库,其中包含 2291 行,每行有 6 列。

我还有一个 .csv 文件,其中包含 1000 多个具有相同 6 列的行,尽管其中三个默认设置为 NULL(与我数据库中的某些数据相同,这意味着,有些也默认设置为 NULL)。我试图将它们导入(不是 replace)到现有数据库中。

第一列是主键,我知道.csv 和数据库都没有重复的主键。主键看起来像这样:0015000000b0Y2u

我的问题是:如何将这 1000 多行(它们本身带有唯一的 主键)导入到预先存在的 2291 行中,而不会出现 #1062 错误?

SQL query:

INSERT INTO  `Spreadsheet` (  `accountID` ,  `accountName` ,  `website` ,  `rating` ,  `imageURL` ,  `comments` ,  `category` ) 
VALUES (

'0015000000b0Y3z',  'Kittredge and Associates Inc',  'kittredgeandassociates.com', NULL ,  'kittredgeandassociates.com.jpg', NULL , NULL
)
MySQL said: 

#1062 - Duplicate entry '0015000000b0Y3z' for key 'PRIMARY' 

上面附上的是我一直收到的 #1062 错误,尽管我 100% 确定我没有 PRIMARY 的重复 key 。

我不想让 mySQL 自动递增,因为我已经调查过了,这不是我正在寻找的解决方案。

我已经尝试更改重复输入违规者 key ,但无济于事,同样的错误。有人可以帮我吗?

最佳答案

我怀疑问题是您的主键是一个不区分大小写排序规则的字符列(例如 latin1_swedish_ci)。如果是这样,小写字母和大写字母将被视为“相等”,这将导致重复。

这是一个演示。注意 collat​​ion_name 值的不同:

CREATE TABLE t3 (mycol VARCHAR(4) COLLATE latin1_swedish_ci PRIMARY KEY );
INSERT INTO t3 VALUES ('A'),('a');

-- Error Code: 1062
-- Duplicate entry 'a' for key 'PRIMARY'

CREATE TABLE t4 (mycol VARCHAR(4) COLLATE latin1_bin PRIMARY KEY );
INSERT INTO t4 VALUES ('A'),('a');

-- 2 row(s) affected

如果您需要 MySQL 将大写字母和小写字母视为不相等,那么您需要为该列指定区分大小写或二进制排序规则,而不是不区分大小写的排序规则。

(注意:MySQL 命名排序规则不区分大小写,排序规则名称末尾带有 _ci,例如 latin1_swedish_ci。)

如果列当前是 latin1 字符集和 latin1_swedish_ci 排序规则,您可能希望将列上的排序规则更改为 latin1_general_cslatin1_bin.

例如

ALTER TABLE t3 CHANGE mycol mycol VARCHAR(4) COLLATE latin1_general_cs ;

http://dev.mysql.com/doc/refman/5.5/en/case-sensitivity.html

http://dev.mysql.com/doc/refman/5.5/en/adding-collation.html

关于php - 尽管没有重复项,但在 mySQL/phpMyAdmin 中收到 #1062 重复错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128409/

相关文章:

java - MySQL连接超时

java - 控制台程序的 JNDI 连接池?

mysql - REST API 与数据库的关系

php - MYSQL/PHP-从数据库中回显插入的数据

php - 将每个数组值作为单独的行插入 codeigniter 从 Controller 到模型

mysql - 如何在 MySQL 中使用别名对城市建模

使用 BETWEEN 的 MySQL DATE_FORMAT 不起作用

SQL:如何获取变量的最大值(另一个变量的每个类别)

php - 如何检索存储在 mySQL 表中的 HTML/PHP 代码而不将 PHP 注释掉?

php - 使用 XDebug 和 Netbeans 调试 PHP 项目崩溃