powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нарушение уникальности PK
25 сообщений из 111, страница 1 из 5
Нарушение уникальности PK
    #39195251
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

FB 2.5 WI-V6.3.4.26856

Обнаружено нарушение уникальности первичного ключа.

Фрагмент таблицы:
Код: plsql
1.
2.
3.
4.
create table T (
    ID          integer NOT NULL,
    REF_ID      integer,
    NAME        varchar(100),



Такой запрос возвращает некое значение ID:
Код: plsql
1.
2.
3.
4.
select ID
  from T
 group by ID
having count(*) > 1



Запрос вида
Код: plsql
1.
2.
3.
select *
  from T
 where ID = 123

возвращает 2 абсолютно идентичных по значениям полей записи

В логе сервера ничего криминального нет. Но это ни о чем не говорит - в какой-то момент была переустановка сервера (в смысле, самой железяки). Весьма вероятно, что эти данные были вставлены в таблицу до переустановки сервера.

Правильно ли я понимаю, что гикнулся индекс первичного ключа и надо его пересоздать?

С уважением, Polesov.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195256
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл указать, что по полю ID создан первичный ключ:
Код: plsql
1.
ALTER TABLE T ADD CONSTRAINT PK_T PRIMARY KEY (ID);
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195262
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
индекс битый
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195301
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Битый индекс способен не вернуть существующую запись, но вернуть несуществующую...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195304
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, апдейт вида
Код: plsql
1.
update T set ID = ID

выполнился без каких-либо ошибок
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195310
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Polesov!
You wrote on 18 марта 2016 г. 13:08:00:

Polesov> выполнился без каких-либо ошибок
читай статью о поиске дубликатов
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195315
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

зачем надо было делать апдейт? надо было индекс перестроить
ALTER INDEX PK_T ACTIVE;
COMMIT;
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195317
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

собственно, если в таблице и правда дубли, при перестройке индекса будет облом. на некоторое время окажешься с таблицей без контроля ПК.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195318
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, не помогло.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195323
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

gfix -v -fu - что говорит ?

Поле - точно INTEGER ? А может там NUMERIC ? Или (о ужас) VARCHAR\DOUBLE PRECISION ?
А может там раньше был не INTEGER ?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195325
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

не верю. или см. ответ hvlad.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195330
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladgfix -v -fu - что говорит ?
data base file name (localhost:с:\data\db.fdb) already given

hvladПоле - точно INTEGER ? А может там NUMERIC ? Или (о ужас) VARCHAR\DOUBLE PRECISION ?
INTEGER

hvladА может там раньше был не INTEGER ?
Вот этого не знаю - БД была создана давно.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195332
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvPolesov,

не верю. или см. ответ hvlad.

Да я сам не верю
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195337
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице есть поле, хранящее GUID в текстовом виде.
Был сделан бекап БД в GBK-файле осуществлен поиск этого GUID.
Найдено 2 совпадения - говорит ли это о том, что в БД данная запись присутствует 2 раза?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195341
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Polesov!
You wrote on 18 марта 2016 г. 13:36:20:

Polesov> В таблице есть поле, хранящее GUID в текстовом виде.
> Был сделан бекап БД в GBK-файле осуществлен поиск этого GUID.
> Найдено 2 совпадения - говорит ли это о том, что в БД данная запись присутствует 2 раза?
это говорит о том, что в огороде бузина.
а в киеве - дядька.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195345
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesovhvladgfix -v -fu - что говорит ?
data base file name (localhost:с:\data\db.fdb) already givenМне начинать ругаться или ты уже сам понял свою ошибку и пошёл читать синтаксис вызова gfix ?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195346
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА может там раньше был не INTEGER ?
Вот этого не знаю - БД была создана давно.
Кстати, в таблице есть тайм-стамп когда данные были добавлены.
Инсерт был 23 ноября 2015 года - на тот момент поле точно было INTEGER NOT NULL PRIMARY KEY

И еще, как раз в тот период наблюдались аппаратные проблемы с сервером (чуть позже физически посыпались 2 HDD)
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195387
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[/quot]Мне начинать ругаться...[/quot]
В конце поставил точку с запятой и не мог понять, что не так...

Код: powershell
1.
2.
Summary of validation errors
        Number of index page errors     : 1




Пересоздание индекса помогло:
- удаляем все FK, указывающие на эту таблицу
- удаляем двойные записи
- удаляем PK
- восстанавливаем PK
- восстанавливаем удаленные записи-двойники в единственном экземпляре
- восстанавливаем все FK на эту таблицу
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195398
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийэто говорит о том, что в огороде бузина.

В бд в залезли НЕХ-редактором и изменили значение текстового поля одной из записей-двойников: в селекте 2 поля с отличием измененного текстового поля
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195406
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Polesov!
You wrote on 18 марта 2016 г. 14:21:05:

Polesov> В бд в залезли НЕХ-редактором и изменили значение текстового полязаписи на странице данных пакуются.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195415
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийзаписи на странице данных пакуются.

Были изменены символы в значении поля, было ABC - стало ZZZ. Длина не менялась.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195422
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Polesov!
You wrote on 18 марта 2016 г. 14:27:37:

Polesov> Были изменены символы в значении поля, было ABC - стало ZZZ. Длина не менялась.
При наличии отсутствия пропитанных шпал, — кричал Виктор Михайлович на весь двор, — это будет не трамвай, а одно горе!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195427
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийПри наличии отсутствия пропитанных шпал, — кричал Виктор Михайлович

Ну, да - это вам не ешака купить.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195478
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovБыли изменены символы в значении поля, было ABC - стало ZZZ. Длина не менялась.Похоже, не догоняешь.
Перевожу: возьми zip-архив, и поменяй что-то в нём, не меняя длины. О результатах распаковки доложи.
Пример грубый, но наглядный.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195484
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

Данные менялись в копии БД, а не бэкапе.
Или FB при записи данных их сжимает, а при чтении - разжимает?

Я думал, что упакованные данные - это хранение VARCHAR актуальных данных, а не всей объявленной длины.
Или я не прав?
...
Рейтинг: 0 / 0
25 сообщений из 111, страница 1 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нарушение уникальности PK
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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