2016-09-29 2 views
-3

Обновление: после многих болезненных исследований я обнаружил, что на самом деле проблема, и обновил заголовок, чтобы иметь немного больше смысла. Я отвечу ниже.MySQL: повторяющаяся запись для ключа (раньше «Что означает« idx »?)

К сожалению, я не могу скопировать запрос, который дает мне эту проблему, потому что он принадлежит моей компании, поэтому мне нужно будет задать свой вопрос очень конкретным.

У меня есть INSERT INTO ... SELECT запрос, который возвращается сообщение об ошибке:

Duplicate entry <gobbledygook> for key 'idx_<tablename>' 

имя таблицы в конце концов, это правильное название, но она имеет этот странный idx_ префикс до того, как это не является частью какой-либо из таблиц I в настоящее время работает. Что это такое idx? Это имеет какое-то отношение к information_schema?

Обновление: По-видимому, мне нужно прояснить ситуацию: в названии нет столбца с idx.

+0

Это индекс ... – shmosel

+0

Это индекс и, вероятно, должен быть уникальным. – 3y3skill3r

+0

Это уникальный индекс, который нарушается. –

ответ

1

"idx_" является общим префиксом для имен индексов.

У вас есть индекс, который не позволяет дублировать значения столбца, на которые ссылается этот индекс.

1

Многочисленные веб-страницы не выявили много, когда я пытался решить эту проблему, но я, наконец, понял ее (и ответ JohnH помог мне сделать это).

Наконец-то я обнаружил, что «idx» не является чем-то, созданным MySQL, а именем, которое кто-то еще дал индексу. Я никогда не сталкивался с ограничением уникальности для индекса, который раньше не был ключом, поэтому я не знал, откуда эта ошибка.

Эта команда показала все индексы:

SHOW INDEX FROM <tablename> 

И я был в состоянии видеть, что неуникальным был установлен в 0 для этого ключа.

Чтобы устранить проблему, я смог просто отбросить индекс и воссоздать его, не добавляя ограничения уникальности.

DROP INDEX idx_<tablename> ON <tablename>; 
ALTER TABLE <tablename> ADD INDEX idx_<tablename> (<comma-separated columns>); 

ли не вынимая ограничение уникальности является хорошей идеей, еще предстоит увидеть, но это также выходит за рамки данного вопроса.

Смежные вопросы