有人可以帮我理解这个MySQL表的关键结构吗?

时间:2014-05-14 16:25:53

标签: mysql key duplicates

我们有一个3列表,我没有设置,基本上只跟踪时间戳。这是表:

  | Field | Type                | Null | Key | Default | Extra |
  | name  | varchar(255)        | YES  | MUL | NULL    |       |
  | type  | enum('start','end') | YES  |     | NULL    |       |
  | time  | datetime            | YES  | MUL | NULL    |       |

以下是一些示例数据:

  

| updateIDXfiletrans.php |开始| 2011-02-16 00:30:01 |

     

| morningmarketingimportstart.php |开始| 2011-02-16 00:30:01 |

     

| updateIDXfiletrans.php |结束| 2011-02-16 00:30:02 |

     

| morningmarketingimportstart.php |结束| 2011-02-16 00:35:15 |

正如您所看到的,这些字段本身都不是唯一的。事实上,这个表的唯一逻辑键结构将是所有3列的多列键,因为这是唯一应该是唯一的,所有3的组合。这就是我假设表有的因为嗯......它已经连续工作了3年,所以我没想到钥匙设置错了。

然后在转移到新服务器时,当我们尝试运行导入时,它会反复出现此错误:

  

ERROR 1062(23000)第51行:重复录入' eod_blf-start'为了钥匙   ' nameindex'

我去检查索引结构,这是我发现的:

  

|表| Non_unique | Key_name | Seq_in_index |   Column_name |整理|基数| Sub_part |打包|空|   Index_type |评论| Index_comment |

     

| blfimporttracking | 1 | nameindex | 1 |命名
  | A | 48 | NULL | NULL |是的| BTREE |
  | |

     

| blfimporttracking | 1 | nameindex | 2 |键入
  | A | 96 | NULL | NULL |是的| BTREE |
  | |

     

| blfimporttracking | 1 | timeindex | 1 |时间
  | A | 16920 | NULL | NULL |是的| BTREE |
  | |

旧服务器和新服务器上的一切都是相同的,但只有新服务器出现问题。我还应该注意到,在每台服务器上,我们为三家不同的公司设置了相同的设置(我今天仔细检查过),这只发生在一家公司的进口上。

基本上,我不明白我在这里看到的是什么。是nameindex和timeindex键,还是只是索引?无论如何,设置的方式是否应该导致重复的输入错误?

对于它,我进入MySQL本身,只是将相同的数据插入到有问题的表中多次,这一切都很好。所以我在这里很困惑。

0 个答案:

没有答案