|
|
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
День добрый! В последнее время несколько раз сталкивались со следующей проблемой. Есть таблица (таблицы) с уникальным ограничением (по одной или нескольким колонкам, не важно). При попытке сделать REINDEX (или сделать дамп, а потом его восстановить на новом месте) обнаруживается, что в таблице имеются дублирующиеся записи, нарушающие ограничение. Соответственно, REDINDEX не проходит, и индекс не создаётся при восстановлении дампа до тех пор, пока эти записи не подчистишь. Наблюдать такое стали после перехода на 9.3. В данный момент версия: 9.3.4 Что это может быть за беда? Сталкивался ли кто? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2014, 12:30:44 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2014, 13:29:09 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
Hot_standby отключен fsync = on synchronous_commit = off Репликации нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2014, 13:56:19 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
Terminus, возможно в триггере before кто-то обрабатывает эксепшн unique_violation, и таки пихает в обработчике левое данное. пж он такое умеет. насчет unique_violation не утверждаю. а вот check так на раз протыкался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2014, 20:02:04 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
этта, там какая-то другая штука. Пару раз видел после fsck ... винты сыпались ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2014, 22:04:51 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
Вы бы для полноты картины еще назвали на чем у Вас Postgres крутиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 09:22:12 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
PostgreSQL работает под Debian 7 64 Триггеров, увы, нет :) Проблема проявлялась на двух различных физических серверах, так что, скорее всего, с винтами всё нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 12:35:40 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
TerminusТриггеров, увы, нет :) А наследования и/или правил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 09:51:18 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
buddy_ekb, Есть и такие (с наследованием), но как минимум одна пострадавшая таблица содержит только пару уникальных ключей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 13:52:14 |
|
||
|
Появляются дублированные строки, несмотря на уникальное ограничение
|
|||
|---|---|---|---|
|
#18+
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 уходили) - могло с тех пор остаться. Лечить - руками удалить дубликаты. Больше появлятся не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 15:45:44 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38652773&tid=1998655]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
286ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 627ms |

| 0 / 0 |
