mysql workbench重复键错误

时间:2015-12-02 06:18:35

标签: mysql sql mysql-workbench

我有一个包含国家/地区名称列表的数据集,国家/地区名称对“男性”重复一次,然后再次为“女性”重复。

例如:

c_name     gender
China      M
Greece     M
Algeria    M
China      F
Greece     F
Algeria    F

当我从csv文件创建表并导入数据时,出现“重复键”错误。我想知道这是否与发动机设置有关?有什么想法可以解决这个问题吗? (我知道它有效,因为我的朋友让它在她的Mac上工作,她在创建她的桌子时没有选择'Collat​​e'或'Engine',但我在Windows上)

编辑:这是我创建表格的方式:

CREATE TABLE dbsenrollment

e_id INT NOT NULL,

c_name VARCHAR(45)NOT NULL,

gender VARCHAR(45)NULL,

2001 INT NULL,

2002 INT NULL,

2003 INT NULL,

2004 INT NULL,

2005 INT NULL,

2006 INT NULL,

2007 INT NULL,

2008 INT NULL,

2009 INT NULL,

2010 INT NULL,

PRIMARY KEY(e_idc_name));

3 个答案:

答案 0 :(得分:0)

您的朋友可能会在此表中设置一个带有c_name的主键,如果您想进行更改,则可以取消主键。

答案 1 :(得分:0)

如果您共享用于上述内容的查询,最好回答。我同意Walker Li。

如果你的查询是这样的......

CREATE TABLE enrollment (
  c_name VARCHAR(255) NOT NULL,
  gender VARCHAR(255) NOT NULL,
  PRIMARY KEY (c_name)
);

您可以通过删除主ID行

来更改它
CREATE TABLE enrollment (
  c_name VARCHAR(255) NOT NULL,
  gender VARCHAR(255) NOT NULL
);

希望这能解决你的问题。

如果您的csv数据包含任何唯一列作为ID,则可以将其用作主键,

CREATE TABLE enrollment (
  e_id INT NOT NULL,
  gender VARCHAR(255) NOT NULL,
  PRIMARY KEY (e_id)
);

一个表只能有一个主键。删除最后一行中的c_name,并且只有e_id,如下所示

PRIMARY KEY (e_id);

答案 2 :(得分:0)

e_id和c_name的组合必须是唯一的。如果不是,您可以创建一个额外的人工主键作为解决方法。

CREATE TABLE `enrollment` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `e_id` int(11) NOT NULL,
  `c_name` varchar(45) NOT NULL,
  `gender` varchar(45) DEFAULT NULL,
  `2001` int(11) DEFAULT NULL,
  `2002` int(11) DEFAULT NULL,
  `2003` int(11) DEFAULT NULL,
  `2004` int(11) DEFAULT NULL,
  `2005` int(11) DEFAULT NULL,
  `2006` int(11) DEFAULT NULL,
  `2007` int(11) DEFAULT NULL,
  `2008` int(11) DEFAULT NULL,
  `2009` int(11) DEFAULT NULL,
  `2010` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;