powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ERROR: duplicate key violates unique constraint
25 сообщений из 54, страница 2 из 3
ERROR: duplicate key violates unique constraint
    #33333677
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
domanixВсе равно - не воспроизводится...
у меня 8.1b3
может Мне стоит попробовать обновиться до твоей версии?
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33333765
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321Конкретно там (по сноске) - да - речь об индекс-скане. Но тот же механизм (если я его правильно просек) позволил бы развязать проблему проверки уникью по выходу (а не внутри транзакции - на каждой строке) - т.е. преодолеть тот же баг атомарности апдейта, и он же позволил бы развязать конкурирующие за некое значение уникью транзакции. (т.е. - "кто первый закоммитил - тот и прав, а тот, кто покурить вышел - _никого_не_держит, но получит отлуп при попытке коммита").Даже боюсь размышлять о таких высоких материях со своей дилетантской позиции, потому что почти наверняка упущу какую-нибудь важную тонкость. Но, как я показал на примере, у древнего оракла (в котором тем не менее индекс скан есть) поведение аналогичное - транзакция зависает, а не получает отлуп при попытке коммита, как вы предлагаете. Правда, иное поведение у транзакции после зависания, если конкурирующую завершили коммитом. В постгресе отваливается вся транзакция - надо делать роллбэк, а в оракле только висевший стэйтмент, транзакцию можно продолжать.
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33333806
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatкак я показал на примере, у древнего оракла...был невнимателен, "вспылил(с)"

мдя-с .Таки трабла с "недо"версионностью как таковой (уникью обчий и в оракле для усих транзакций?)? Какого же ляда он тады атомарно уникью перестраивать горазд (внутри одной транзакции)? чё-то туманно это мине

И что, отложить уникью в ём тоже низзя?
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33334395
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321уникью обчий и в оракле для усих транзакций?Каким экспериментом это можно проверить?
4321И что, отложить уникью в ём тоже низзя?Судя по доке можно. (Для доступа требуется регистрация.)
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33334592
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBat 4321уникью обчий и в оракле для усих транзакций?Каким экспериментом это можно проверить?
4321И что, отложить уникью в ём тоже низзя?Судя по доке можно. (Для доступа требуется регистрация.)
спасибо за ссылку. Но оракла под рукой нету, а написанному даже в доке без теста верить не имею привычки. Разве как ввводным для теста и его трактовки. Т.ч. бодяжиться с регистрацией не стал.

Но видимо по инсертам Оракла ведет себя именно так как и Постгря ( см. туточки ) Что для некоторых и там было неожиданностью (блокировка не апдейта, но инсерта).


Т.ч. придеца иметь в виду возможность провисания транзакций и из-за инсертов в уникью. И по возможности избегать (по ссылке много бравых надежд, что ситуация, при правильном проектировании практицки невероятная, думаю - от избытка неоправданного оптимизма, хотя народец там и подкованный).
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33334651
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ. по поводу невозможности в Оракле NOWAIT-а при инсерте там (по ссылке) тоже есь.
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33334869
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа,
значит не видать мне первичного ключа русскими буковками да?
ERROR: повторный ключ нарушает констрейнт UNIQUE "xpktest"
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33335468
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gekoГоспода,
значит не видать мне первичного ключа русскими буковками да?
ERROR: повторный ключ нарушает констрейнт UNIQUE "xpktest"У меня ошибки не наблюдается. PostgreSQL 8.0.3.

=> create table test (
(> code char(5) not null,
(> name varchar(100) not null,
(> CONSTRAINT xpktest PRIMARY KEY (code)
(> );
NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс "xpktest" для таблицы "test"
CREATE TABLE
=> INSERT INTO test (code, name ) VALUES ('АБВ', 'Вася');
INSERT 68935916 1
=> INSERT INTO test (code, name ) VALUES ('АБВГ', 'Петя');
INSERT 68935917 1
=> INSERT INTO test (code, name ) VALUES ('АБВГД', 'Саша');
INSERT 68935918 1
=> INSERT INTO test (code, name ) VALUES ('АБВГДЕ', 'Маша');
ERROR: значение велико для типа character(5)
=> select * from test;
code | name
-------+------
АБВ | Вася
АБВГ | Петя
АБВГД | Саша
(3 rows)

Наверное у вас проблема в настройках ОС или постгреса.
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33335605
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBat gekoГоспода,
значит не видать мне первичного ключа русскими буковками да?
ERROR: повторный ключ нарушает констрейнт UNIQUE "xpktest"У меня ошибки не наблюдается. PostgreSQL 8.0.3.

=> create table test (
(> code char(5) not null,
(> name varchar(100) not null,
(> CONSTRAINT xpktest PRIMARY KEY (code)
(> );
NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс "xpktest" для таблицы "test"
CREATE TABLE
=> INSERT INTO test (code, name ) VALUES ('АБВ', 'Вася');
INSERT 68935916 1
=> INSERT INTO test (code, name ) VALUES ('АБВГ', 'Петя');
INSERT 68935917 1
=> INSERT INTO test (code, name ) VALUES ('АБВГД', 'Саша');
INSERT 68935918 1
=> INSERT INTO test (code, name ) VALUES ('АБВГДЕ', 'Маша');
ERROR: значение велико для типа character(5)
=> select * from test;
code | name
-------+------
АБВ | Вася
АБВГ | Петя
АБВГД | Саша
(3 rows)

Наверное у вас проблема в настройках ОС или постгреса.

может нам стоит с Вами настройки постргереса сравнить?
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33335794
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gekoА какая у тебя OC?
может настройками поделишься?
может нам стоит с Вами настройки постргереса сравнить?У нас сисадмин занимается установкой оси, постгреса и других вещей. Я в этом почти не разбираюсь. :( Выполнить команду и показать ее выдачу могу. Какую команду? :)

Ось:
~$ uname
Linux
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33335858
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBat gekoА какая у тебя OC?
может настройками поделишься?
может нам стоит с Вами настройки постргереса сравнить?У нас сисадмин занимается установкой оси, постгреса и других вещей. Я в этом почти не разбираюсь. :( Выполнить команду и показать ее выдачу могу. Какую команду? :)

Ось:
~$ uname
Linux

:( команд вывода конфигурации не знаю,
файлик посмотреть бы postgresql.conf
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33336608
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_connections = 100
shared_buffers = 1000 # min 16, at least max_connections*2, 8KB each
effective_cache_size = 8192 # typically 8KB each
stats_command_string = true
lc_messages = 'ru_RU.cp1251' # locale for system error message strings
lc_monetary = 'ru_RU.cp1251' # locale for monetary formatting
lc_numeric = 'ru_RU.cp1251' # locale for number formatting
lc_time = 'ru_RU.cp1251' # locale for time formatting

База создавалась: create database ... with encoding 'WIN-1251';
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33336893
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBatmax_connections = 100
shared_buffers = 1000 # min 16, at least max_connections*2, 8KB each
effective_cache_size = 8192 # typically 8KB each
stats_command_string = true
lc_messages = 'ru_RU.cp1251' # locale for system error message strings
lc_monetary = 'ru_RU.cp1251' # locale for monetary formatting
lc_numeric = 'ru_RU.cp1251' # locale for number formatting
lc_time = 'ru_RU.cp1251' # locale for time formatting

База создавалась: create database ... with encoding 'WIN-1251';

ну и у меня почти тоже самое только кодировка ru_RU.koi8r
единственное... изначально пакеты psql устанавливались на кодировке ru_RU.UTF-8, а база была сразу создана с кодировкой KOI8 с первого
момента работы, все данные тоже в кодировке koi-8r, а первичные
ключи не понимает... :(
есть еще предложения.... ??? .....

может стоит попытаться перейти на 8.0.3 ???
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33337964
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
geko
может стоит попытаться перейти на 8.0.3 ???

Можно.
Но есть еще ряд интересных возможностей.

Вставь куда-нибудь русские буквы и сделай потом select чтобы увидеть, что именно получилось в базе.
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33338157
Хых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно, однако.
а если сначала инсерт, а потом примари кей?
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33338656
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ilejn geko
может стоит попытаться перейти на 8.0.3 ???

Можно.
Но есть еще ряд интересных возможностей.

Вставь куда-нибудь русские буквы и сделай потом select чтобы увидеть, что именно получилось в базе.

не вопрос...

test=# INSERT INTO test (code, name ) VALUES ('125', 'Саша спит');
INSERT 13836517 1
test=# INSERT INTO test (code, name ) VALUES ('126', 'Маша гуляет');
INSERT 13836518 1
test=# INSERT INTO test (code, name ) VALUES ('127', 'Миша играет');
INSERT 13836520 1

test=# select * from test where code > 1;
code | name
-------+----------------------------------
125 | Саша спит
126 | Маша гуляет
127 | Миша играет
(записей: 3)

test=# select * from test where name = 'Маша гуляет';
code | name
-------+-------------
126 | Маша гуляет
127 | Миша играет
(записей: 2)

test=# select * from test where name = 'Миша играет';
code | name
-------+-------------
126 | Маша гуляет
127 | Миша играет
(записей: 2)

Как так может получиться если поле name = 'Маша гуляет' выводит сразу 2 строки
126 | Маша гуляет
127 | Миша играет

Так ведь не должно быть .... ??? .....
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33338745
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
geko select * from test where name = 'Маша гуляет';
code | name
-------+-------------
126 | Маша гуляет
127 | Миша играет
(записей: 2)

А можно explain ?
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33338758
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И
\d test;
из psql
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33339199
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Funny_FalconИ
\d test;
из psql

test=# \d test
Таблица "public.test"
Колонка | Тип | Модификаторы
---------+------------------------+--------------
code | character(5) | not null
name | character varying(100) | not null
Индексы:
"xpktest" PRIMARY KEY, btree (code)
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33339202
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хыхинтересно, однако.
а если сначала инсерт, а потом примари кей?

если делать инсерт без первичного ключа то все нормально вставляется и ошибки не вылетает, а как потом добавить первичный ключ к таблице???
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33339203
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Funny_Falcon geko select * from test where name = 'Маша гуляет';
code | name
-------+-------------
126 | Маша гуляет
127 | Миша играет
(записей: 2)

А можно explain ?

конечно можно...

psql -c "EXPLAIN SELECT * from test where name = 'Маша гуляет';"

QUERY PLAN
------------------------------------------------------
Seq Scan on test (cost=0.00..19.12 rows=4 width=77)
Filter: ((name)::text = 'Маша гуляет'::text)
(записей: 2)
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33339572
Хых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
geko хыхинтересно, однако.
а если сначала инсерт, а потом примари кей?

если делать инсерт без первичного ключа то все нормально вставляется и ошибки не вылетает, а как потом добавить первичный ключ к таблице???

может так?

ALTER TABLE "public"."table1"
ALTER COLUMN "aaa" SET NOT NULL;

ALTER TABLE "public"."table1"
ADD CONSTRAINT "new_index"
PRIMARY KEY ("aaa");
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33339620
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Попробуй дропнуть индекс и тогда сделать выборку - ситуация измениться?
2. Если не измениться, то что выдает следующий запрос?
Код: plaintext
select oprcode from pg_catalog.pg_operator where oprname='=' and oprleft= 25  and oprright= 25 ;
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33340053
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Funny_Falcon1. Попробуй дропнуть индекс и тогда сделать выборку - ситуация измениться?
Забудь, я глупый. У тебя и так SeqScan :-)
А второй вопрос?
...
Рейтинг: 0 / 0
ERROR: duplicate key violates unique constraint
    #33340311
geko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Funny_Falcon1. Попробуй дропнуть индекс и тогда сделать выборку - ситуация измениться?
2. Если не измениться, то что выдает следующий запрос?
Код: plaintext
select oprcode from pg_catalog.pg_operator where oprname='=' and oprleft= 25  and oprright= 25 ;


а что это такое oprcode?

oprcode
---------
texteq
(1 запись)
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ERROR: duplicate key violates unique constraint
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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