powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Duplicate entry for key. Mysql пытается создать запись с другими значениями.
8 сообщений из 8, страница 1 из 1
Duplicate entry for key. Mysql пытается создать запись с другими значениями.
    #38951593
peektoseen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Подскажите пожалуйста, как решить эту проблему:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
mysql> INSERT INTO custom_wifi_score( user_id, 
    -> TYPE , iblock_element_id, score ) 
    -> VALUES ( 517049460113,  'OK', 30033, 20 );
ERROR 1062 (23000): Duplicate entry '30033-OK-2147483647' for key 'unique_index'

mysql> show index from custom_wifi_score where key_name='unique_index'\G
*************************** 1. row ***************************
        Table: custom_wifi_score
   Non_unique: 0
     Key_name: unique_index
 Seq_in_index: 1
  Column_name: iblock_element_id
    Collation: A
  Cardinality: 316
     Sub_part: NULL
       Packed: NULL
         Null: 
   Index_type: BTREE
      Comment: 
Index_comment: 
*************************** 2. row ***************************
        Table: custom_wifi_score
   Non_unique: 0
     Key_name: unique_index
 Seq_in_index: 2
  Column_name: type
    Collation: A
  Cardinality: 702
     Sub_part: NULL
       Packed: NULL
         Null: 
   Index_type: BTREE
      Comment: 
Index_comment: 
*************************** 3. row ***************************
        Table: custom_wifi_score
   Non_unique: 0
     Key_name: unique_index
 Seq_in_index: 3
  Column_name: user_id
    Collation: A
  Cardinality: 6322
     Sub_part: NULL
       Packed: NULL
         Null: 
   Index_type: BTREE
      Comment: 
Index_comment: 
3 rows in set (0.01 sec)



Как видите, я пытаюсь записать user_id =' 517049460113 ', но ошибка указывает на то, что уже существует запись, в которой уникальный ключ такой-же, и пишет мне значение user_id совершенно другой записи ' 2147483647 '.
Может что с ключом не так?
...
Рейтинг: 0 / 0
Duplicate entry for key. Mysql пытается создать запись с другими значениями.
    #38951608
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
peektoseen,
изменить тип поля `user_id` с integer на bigint.
...
Рейтинг: 0 / 0
Duplicate entry for key. Mysql пытается создать запись с другими значениями.
    #38951612
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, что поле user_id имеет тип INT и вставляемое значение усекается до верхней границы этого типа.
И, похоже, уже не первый раз, т.е. часть значений в этом поле уже испорчена.
...
Рейтинг: 0 / 0
Duplicate entry for key. Mysql пытается создать запись с другими значениями.
    #38951622
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peektoseen,

Что может быть не так с индексом ?
Он либо есть, либо нет его.

Ты транскрипт буквальный привёл ?
В консоли всё ты ровно так и делал, и видел такие сообщения ?

Если подозреваешь, что индекс испортился (хотя это очень странно) -- дропни индекс и создай заново такой же.
...
Рейтинг: 0 / 0
Duplicate entry for key. Mysql пытается создать запись с другими значениями.
    #38951631
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftИ, похоже, уже не первый раз, т.е. часть значений в этом поле уже испорчена.Ну если индекс уникальный, то ничего там не испорчено, кроме одного, самого первого, усечённого значения. Остальные должны были автоматически отбрасываться.
...
Рейтинг: 0 / 0
Duplicate entry for key. Mysql пытается создать запись с другими значениями.
    #38951637
peektoseen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища , miksoft , в точку именно поэтому так и получилось. Думал что раз я выставляю для INT разрядность 20 - то позволит записать туда 20-значное число, как оказалось - нет.
Таблица тестовая, в продакшен пока не выпущена. Повезло что заметил баг.
Спасибо вам за ответы!
...
Рейтинг: 0 / 0
Duplicate entry for key. Mysql пытается создать запись с другими значениями.
    #38951639
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirmiksoftИ, похоже, уже не первый раз, т.е. часть значений в этом поле уже испорчена.Ну если индекс уникальный, то ничего там не испорчено, кроме одного, самого первого, усечённого значения. Остальные должны были автоматически отбрасываться.Кроме одного на каждую пару значений (iblock_element_id, type). Индекс-то из трех полей.
...
Рейтинг: 0 / 0
Duplicate entry for key. Mysql пытается создать запись с другими значениями.
    #38951642
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peektoseenДумал что раз я выставляю для INT разрядность 20 - то позволит записать туда 20-значное число, как оказалось - нет.Нет, конечно. Эта "разрядность" на фактическое хранение вообще никакого влияния не оказывает. Это просто некий комментарий к полю, который говорит о том, как форматировать число при выводе некоторыми утилитами, в частности консольным клиентом mysql.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Duplicate entry for key. Mysql пытается создать запись с другими значениями.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]