powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Появляются дублированные строки, несмотря на уникальное ограничение
11 сообщений из 11, страница 1 из 1
Появляются дублированные строки, несмотря на уникальное ограничение
    #38648792
Terminus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

В последнее время несколько раз сталкивались со следующей проблемой.
Есть таблица (таблицы) с уникальным ограничением (по одной или нескольким колонкам, не важно). При попытке сделать REINDEX (или сделать дамп, а потом его восстановить на новом месте) обнаруживается, что в таблице имеются дублирующиеся записи, нарушающие ограничение. Соответственно, REDINDEX не проходит, и индекс не создаётся при восстановлении дампа до тех пор, пока эти записи не подчистишь.

Наблюдать такое стали после перехода на 9.3.
В данный момент версия: 9.3.4

Что это может быть за беда? Сталкивался ли кто? :)
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38648942
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
Terminus, похожий глюк описывается при использовании Hot-Standby 1 , http://www.postgresql.org/message-id/flat/0E76EE0A-1740-41B5-88FF-54AA98794532@thebuild.com#0E76EE0A-1740-41B5-88FF-54AA98794532@thebuild.com]2 .
Если сделать дамп с резервного сервера, то можно было получить не совсем корректные данные.
было в версиях 9.3.0, 9.3.1, 9.2.5, 9.1.10, 9.0.14.
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38649007
Terminus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hot_standby отключен
fsync = on
synchronous_commit = off
Репликации нет
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38649545
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Terminus,
возможно в триггере before кто-то обрабатывает эксепшн unique_violation, и таки пихает в обработчике левое данное.
пж он такое умеет.
насчет unique_violation не утверждаю. а вот check так на раз протыкался.
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38649614
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
этта, там какая-то другая штука. Пару раз видел после fsck ... винты сыпались ...
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38649775
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы для полноты картины еще назвали на чем у Вас Postgres крутиться
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38650100
Terminus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PostgreSQL работает под Debian 7 64
Триггеров, увы, нет :)
Проблема проявлялась на двух различных физических серверах, так что, скорее всего, с винтами всё нормально.
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38652773
buddy_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TerminusТриггеров, увы, нет :)

А наследования и/или правил?
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38653251
Terminus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buddy_ekb,

Есть и такие (с наследованием), но как минимум одна пострадавшая таблица содержит только пару уникальных ключей :)
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38653487
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TerminusДень добрый!

В последнее время несколько раз сталкивались со следующей проблемой.
Есть таблица (таблицы) с уникальным ограничением (по одной или нескольким колонкам, не важно). При попытке сделать REINDEX (или сделать дамп, а потом его восстановить на новом месте) обнаруживается, что в таблице имеются дублирующиеся записи, нарушающие ограничение. Соответственно, REDINDEX не проходит, и индекс не создаётся при восстановлении дампа до тех пор, пока эти записи не подчистишь.

Наблюдать такое стали после перехода на 9.3.
В данный момент версия: 9.3.4

Что это может быть за беда? Сталкивался ли кто? :)

поврежденные данные с старых времен... могло быть из-за:

Fix WAL replay of locking an already-updated tuple (Andres Freund, Álvaro Herrera)
This error caused updated rows to not be found by index scans, resulting in inconsistent query results depending on whether an index scan was used. Subsequent processing could result in constraint violations, since the previously updated row would not be found by later index searches, thus possibly allowing conflicting rows to be inserted. Since this error is in WAL replay, it would only manifest during crash recovery or on standby servers. The improperly-replayed case most commonly arises when a table row that is referenced by a foreign-key constraint is updated concurrently with creation of a referencing row.

Исправленного в 9.3.4.

Если у вас были падения базы или сервера или жесткие рестарты базы (которые в wal-replay уходили) - могло с тех пор остаться.

Лечить - руками удалить дубликаты. Больше появлятся не будет.
...
Рейтинг: 0 / 0
Появляются дублированные строки, несмотря на уникальное ограничение
    #38655981
Terminus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Будем следить, но, если память не изменяет, последний случай был уже на 9.3.4
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Появляются дублированные строки, несмотря на уникальное ограничение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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