尝试完成项目的第一步,在该步骤中,我使用
CREATE TABLE Customers (customerID SMALLINT,firstName VARCHAR(25),lastName VARCHAR(25),street VARCHAR(50),city VARCHAR(50),state VARCHAR(25),zipCode VARCHAR(10),telephone VARCHAR(15),PRIMARY KEY (customerID));
字符串
然后,我应该从应用程序上传一个csv文件。
LOAD DATA INFILE "/home/codio/workspace/customers.csv" INTO TABLE Customers FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
型
或者是
LOAD DATA INFILE '/home/codio/workspace/customers.csv' INTO TABLE Customers FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
型
但这两个都提供了错误代码
ERROR 1062 (23000): Duplicate entry '32767' for key 'PRIMARY'
型
打开文件并搜索32767只会在电话线中产生一个结果。没有重复。DELETE FROM Customers
和DROP TABLE Customers
。两次确认表为空
mysql> SELECT * FROM Customers;
Empty set (0.00 sec)
型
我已经为此争论了几个小时,不知道还能做什么。最糟糕的是我觉得我没有做错什么。但这就是你的用武之地。祈祷吧
我已经删除了表,清除了表,重新创建了表,在某一点上,甚至创建了一个全新的文件。
1条答案
按热度按时间h6my8fg21#
您已将主键定义为
字符串
这意味着它只能保持-32768和32767之间的值。当你使用
LOAD DATA
语句时,任何超出这个范围的值都会被截断,就像LOAD DATA
语句手册中提到的那样:这意味着
customerId
值大于32767的第一个新行将被裁剪为32767。customerId
值大于32767的第二个新行也被剪切为32767,导致主键冲突。解决方案是为
customerId
列使用更大的整数类型,如INT
或BIGINT
。