我们有一个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本身,只是将相同的数据插入到有问题的表中多次,这一切都很好。所以我在这里很困惑。