172 похожих чатов

Добрый день, подскажите, а существует ли возможность появление записей-призраков? У

меня проблема, что в таблицу не инсертится запись duplicate key value violates unique constraint "statistic_pk"
Хотя я проверил, в таблице таких записей с такими ключами нет. Как такое может быть?

24 ответов

19 просмотров

Битый индекс возможно.

Dmitry-Chexkh Автор вопроса
Роман Жарков
Битый индекс возможно.

Это как? И что с этим делать, не подскажите?

Роман Жарков
Битый индекс возможно.

Либо неправильный код на клиенте. В общем — да, при нормальном функцыонировании сервера такое невозможно.

Dmitry Chexkh
Это как? И что с этим делать, не подскажите?

Для начала, проверить. set enable_index_scan on/off Сделать выборку используя индекс и без использования индекса. Сравнить результаты. Ключевое слово explain analyse

Dmitry-Chexkh Автор вопроса
Роман Жарков
Для начала, проверить. set enable_index_scan on/of...

Использова reindex table statistic - не помогло сейчас попробую сделать как вы сказали

Dmitry Chexkh
Это как? И что с этим делать, не подскажите?

Для начала — проверить. Проделать выборку этой записи через indexscan и seqscan, убедиться, что есть расхождение. Затем, если действительно есть — то зависит от того, насколько важны вам данные. Если и фиг с ними — то привести таблицу (основной heap) к правильному состоянию, сделать reindex. Есои важны — остановить систему, сделать дамп, перелить на резервный сервер, проконтролировать цэлостность, потом с первым начать выяснять — нет ли аппаратных проблем или ошыбок конфигурацыи...

Dmitry Chexkh
Использова reindex table statistic - не помогло се...

Сначала надо точно проверить. А то может вы не в той базе проверяете?

В норме такое может быть только в конкурентных транзакциях, по идее. А остальные варианты — какой-то corruption, да. :(

Ilya Anfimov
Для начала — проверить. Проделать выборку этой зап...

> Есои важны — остановить систему, сделать дамп, И выбросить его, если действительно важна корректность данных. ;( Т.е. в таких случаях приходится "признавать" потерю всех данных от последнего корректного состояния, такие дела.

Dmitry-Chexkh Автор вопроса
Ilya Anfimov
Для начала — проверить. Проделать выборку этой зап...

set enable_seqscan = on; Seq Scan on statistic (cost=0.00..145011.93 rows=4031993 width=16) (actual time=0.018..855.330 rows=4031993 loops=1) Planning Time: 0.105 ms Execution Time: 1091.099 ms set enable_seqscan = off; Index Only Scan using statistic_pk on statistic (cost=0.43..175058.44 rows=4031993 width=16) (actual time=0.348..1228.734 rows=4031993 loops=1) Heap Fetches: 340263 Planning Time: 0.165 ms Execution Time: 1480.862 ms Запрос был по ключу explain analyze select loan_id, statistic_date from loans.statistic; Или мне следовало сделать какой-то специфичный запрос?

Dmitry Chexkh
set enable_seqscan = on; Seq Scan on statistic (...

Вам нужно было проверить конкретный дубликат (взяв данные из сообщения об ошибке). Подобное недавно обсуждали, кстати: https://t.me/pgsql/318912

Dmitry Chexkh
set enable_seqscan = on; Seq Scan on statistic (...

Надо ещё выполнить запрос без explain, чтобы результат увидеть. А так всё правильно и если дело в индексе, вы получите разный результат.

Yaroslav Schekin
> Есои важны — остановить систему, сделать дамп, ...

Ну, это просто чушь: обычно если корректность данных важна — то их можно достаточно достоверно сверить на корректность с какими-то резервными источниками. И это обычно дешэвле, чем терять данные с последнего бэкапа (при том, что после его врсстановления его корректность опять, разумеется, придётся проверять).

Dmitry-Chexkh Автор вопроса
Yaroslav Schekin
Вам нужно было проверить конкретный дубликат (взяв...

У меня же составной индекс, к сожалению, я не знаю точно какое значение у одного из компонентов, но знаю выборку, в которой он присутствует. Я могу составить запрос с loan_id ANY() and statistic_date = конкретное_значение?

Dmitry Chexkh
set enable_seqscan = on; Seq Scan on statistic (...

Тут explain analyze нафиг не нужэн, только explain (чтобы подтвердить правильный метод поиска), и сами результаты — чтобы выяснить, с каким методом проблема.

ну сгруппируйте по pk и посмотрите count'ы большие единицы для каждого ключа (с индекс онли сканом и seq scan'ом соответственно)

Ilya Anfimov
Ну, это просто чушь: обычно если корректность данн...

> Ну, это просто чушь: обычно если корректность данных важна — то их можно достаточно достоверно сверить на корректность с какими-то резервными источниками. Это вопрос мнения — "достаточно достоверно" может вылиться в существенные потери, тем не менее. > И это обычно дешэвле, Смотря в какой области / с какими базами.

Dmitry Chexkh
У меня же составной индекс, к сожалению, я не знаю...

Подождите, Вы же писали: > duplicate key value violates unique constraint "statistic_pk" > Хотя я проверил, в таблице таких записей с такими ключами нет. Как такое может быть? Так что я не совсем понимаю, в чём проблема это сделать. > Я могу составить запрос с loan_id ANY() and statistic_date = конкретное_значение? Да составляйте как угодно — важно выбрать по тем условиям (значениям полей), которые приводят к ошибке.

Dmitry-Chexkh Автор вопроса
Yaroslav Schekin
Подождите, Вы же писали: > duplicate key value vi...

Как минимум нет ни одной записи на statistic_date = '2020-08-06 00:00:00' Соответственно записей по ключу вообще нет

Yaroslav Schekin
> Ну, это просто чушь: обычно если корректность да...

Ну, это да, стратегии хранения и восстановления могут быть разные.

Dmitry Chexkh
Как минимум нет ни одной записи на statistic_date ...

Вы этого не проверили. Прочитайте то сообщение, которое я ранее цитировал.

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта