【问题标题】:mysql workbench duplicate key errormysql工作台重复键错误
【发布时间】:2015-12-02 06:18:34
【问题描述】:

我有一个包含国家名称列表的数据集,“男性”的国家名称重复一次,“女性”又重复一次。

例如:

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

当我创建表并从 csv 文件导入数据时,我收到“重复键”错误。我想知道这是否与引擎设置有关?任何想法如何解决? (我知道它可以工作,因为我的朋友让它在她的 Mac 上工作,她在创建表格时没有选择“整理”或“引擎”的选项,但我在 Windows 上)

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

创建表dbs.enrollment (

e_idINT NOT NULL,

c_name VARCHAR(45) 非空,

genderVARCHAR(45) NULL,

2001INT NULL,

2002INT NULL,

2003INT NULL,

2004INT NULL,

2005INT NULL,

2006INT NULL,

2007INT NULL,

2008INT NULL,

2009INT NULL,

2010INT NULL,

主键 (e_id, c_name));

【问题讨论】:

  • 可以包含表定义吗?你有什么索引?
  • 更新了!我也没有对索引做任何添加,它只是说“PRIMARY”“PRIMARY”
  • 在您的数据中的某处,您的 e_id、c_name 对在多行中具有相同的值。

标签: mysql sql mysql-workbench


【解决方案1】:

你的朋友可能在这张表中设置了一个主键c_name,如果你想改变,你可以取消主键。

【讨论】:

    【解决方案2】:

    如果您共享用于上述内容的查询,最好回答。我同意 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);
    

    【讨论】:

      【解决方案3】:

      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-29
        • 2017-10-19
        • 2016-05-28
        • 2015-11-09
        • 1970-01-01
        • 2019-08-12
        • 2012-04-07
        • 2021-02-21
        相关资源
        最近更新 更多