Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
psql -8.0.2 INSERT INTO test (code, name ) VALUES ('АБВ', 'Вася'); INSERT INTO test (code, name ) VALUES ('АБВГ', 'Петя'); INSERT INTO test (code, name ) VALUES ('АБВГД', 'Саша'); ERROR: duplicate key violates unique constraint господа, подскажите пожалуйста, почему появляется такая ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 15:28 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
geko wrote: > psql -8.0.2 > > INSERT INTO test (code, name ) VALUES ('АБВ', 'Вася'); > INSERT INTO test (code, name ) VALUES ('АБВГ', 'Петя'); > INSERT INTO test (code, name ) VALUES ('АБВГД', 'Саша'); > > ERROR: duplicate key violates unique constraint > господа, подскажите пожалуйста, почему появляется такая ошибка? Господин, покажите пожалуйста, описание таблицы test Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 15:31 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
create table test ( code char(5) not null, name varchar(100) not null, CONSTRAINT xpktest PRIMARY KEY (code) ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 15:49 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Гм, а перед вставкой таблица пустая и таких значений ключей в ней нет? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 16:40 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
XM Гм, а перед вставкой таблица пустая и таких значений ключей в ней нет? Posted via ActualForum NNTP Server 1.3 да таблица пустая... слушай, а какова вероятность того, что psql не понимает русских букв при написании от руки скрипта через psql? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 16:48 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
geko XM Гм, а перед вставкой таблица пустая и таких значений ключей в ней нет? Posted via ActualForum NNTP Server 1.3 да таблица пустая... слушай, а какова вероятность того, что psql не понимает русских букв при написании от руки скрипта через psql? хотя кодировка базы koi8r, локаль тоже koi8r.... и при 3-х строках INSERT INTO test (code, name ) VALUES ('АБВ', 'Вася'); INSERT INTO test (code, name ) VALUES ('АБВГ', 'Петя'); INSERT INTO test (code, name ) VALUES ('АБВГД', 'Саша'); может 1 insert, а остальные с ошибкой: ERROR: duplicate key violates unique constraint ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 16:51 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Откуда insert выполняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 16:59 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
PostgreSQL начинающийОткуда insert выполняется? и ручками выполнялся и файликом выполнялся... эффект одинаковый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 17:01 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Странно ... Ошибки быть не должно... Специально попробовал - ситуация описанная выше не воспроизводится.. Все работает как и должно... Вопрос - может есть конкурирущая незавершенная транзакция? Типа добавил - и не закомитил... а в другой транзакции - эти записи не видны - создается впечатление что таблица пустая но при добавлении нарываемся на кронфликт по ключу? Как известно уникальность ключей в индексах проверяется вне транзакции... Может в этом беда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 11:15 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
domanix wrote: > Вопрос - может есть конкурирущая незавершенная транзакция? > Типа добавил - и не закомитил... Тогда бы вторая транзакция ожидала commit первой. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 11:33 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
domanix Вопрос - может есть конкурирущая незавершенная транзакция? Типа добавил - и не закомитил... а в другой транзакции - эти записи не видны - создается впечатление что таблица пустая но при добавлении нарываемся на кронфликт по ключу? низзя сконфликтовать с незавершенной транзакцией, за исключением случая блокировки, но тогда у вас будет не ошибка дубля, а ожидание разблокировки, или максимум - ошибка таймаута в клиенте. Скорее всего афтыр не проверяет пустоту таблы, а гонит пургу, а на деле он уже успел тудыть впиндюлить каку-нть записенку. Хотя и можно допустить, что существует некий неповторимый баг из-за кучи локальных кодировок. domanix Как известно уникальность ключей в индексах проверяется вне транзакции... С этого места поподробнее. По возможности - дайте ссылку. Видимо разработчикам постгреса давно пора застрелицца и не смешить людей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 11:33 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
смотрю: 1. в случае "конфликта" по уникью между двумя транзакциями вторая просто ожидает завершения первой. (не зависит от READ COMMITTED | SERIALIZABLE ) 2. В случае вставки "неконфликтных" записей обе отрабатывают в параллель (т.е. блокировка одной транзакции другой происходит в процессе построения уникального индекса?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 11:55 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
>(т.е. блокировка одной транзакции другой происходит в процессе построения уникального индекса?) Да именно так Версионность есть только у записей.. У ключей индексов версионности нет. Поэтому если ключ уже появился в индексе - то не зависимо от того завершена транзакция или нет - другой записи с таким же ключем вставить не удастся... И действительно - транзакция которая нарвалась на конфликт блокируется пока конкурирующая транзакция не примет решения коммит или ролбак... ИМХО - это нармальная ситуация.. Если вы считаете по другому - то раскажите как по вашему это должно работать? В FirebirdSQL этот механизм работает также - за исключением того что транзакция не блокируется( есть параметр транзакции wait или nowait), и в случае чего откатыватеся конфликтный оператор, а не вся транзакция сразу...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 12:20 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
domanix ИМХО - это нармальная ситуация.. 1. ИМХО - абсолютно ненормальная. Конфликт должен возникать только при попытке коммита. Как это реализовать - второй вопрос. domanix Если вы считаете по другому - то раскажите как по вашему это должно работать? В FirebirdSQL этот механизм работает также - за исключением того что транзакция не блокируется( есть параметр транзакции wait или nowait), и в случае чего откатыватеся конфликтный оператор, а не вся транзакция сразу......меня, честно говоря, не волнуют проблемы разработчиков. Даже разработчиков "свободного" софта. Есть задача реализовать _нормальное_ поведение транзакции - над ней надо работать. А не достает скилзов или идей - ... дык и облезьян ВЫ ить тожа за людей не признаёте. Интересно спросить о поведении уникью в Оракле. И о механизме реализации версионности индексов в нем. Я к сожалению не в курсе. Если всё так же плёхо - то сталобыть возможно существует органическая проблема версионной организации транзакции, если нет - проблема в конкретных решениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 12:35 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
ВОт нашел что-то о траблеме "версионности индексов" в Оракле, но не уверен, что фтему softwarerdimitr Мы говорили про "чисто версионный индекс", который бы позволил index-only scan. Для этого в ключ индекса надо внести transaction ID, который бы позволил определить видимость данной записи без чтения самой записи. Вот здесь и кроется прелесть ораклового подхода. Индекс ничего не знает про какие-то версии. Механизм блоков просто умеет вернуть версию блока, соответствующую транзакции; соответственно, транзакция получает актуальный для нее индекс практически так же, как получает актуальные для себя данные. Transaction ID же учитывается в более внутренних, нежели индекс, структурах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 13:05 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Я почти не сталкивался с транзакциями. :( Но, по-моему, ситуация нормальная. Ведь одна из конкурирующих транзакциц не отваливается, а "зависает" (лочится). Это может случиться и при работе с таблицами без индексов. 1=> create table test ( foo integer ); CREATE TABLE 1=> insert into test values ( 1 ); INSERT 68935894 1 1=> begin; BEGIN 2=> begin; BEGIN 2=> update test set foo=2; UPDATE 1 1=> update test set foo=3; <ЗАВИСАЕТ> P.S.: Вот, если я правильно понял, ваш эксперимент на постгресе и оракле (старом, другого нету). Поведение одинаковое. PostgreSQL 8.0.3 1=> create table test ( id integer not null primary key ); NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс "test_pkey" для таблицы "test" CREATE TABLE 1=> begin; BEGIN 1=> insert into test values ( 1 ); INSERT 68935899 1 1=> insert into test values ( 2 ); INSERT 68935900 1 2=> begin; BEGIN 2=> insert into test values ( 3 ); INSERT 68935901 1 2=> insert into test values ( 2 ); <ЗАВИСАЕТ> Oracle 8.1.7 1> create table test ( id integer not null primary key ); Table created. 2> insert into test values ( 1 ); 1 row created. 2> insert into test values ( 2 ); 1 row created. 1> insert into test values ( 3 ); 1 row created. 1> insert into test values ( 2 ); <ЗАВИСАЕТ> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 13:08 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Напосинаю у постргеса версионная архитектура... которая на данный момент есть толкьо у postgres, firebird (interbase),mySQL(innodb) да у MS Yukon будет... В отличии от других серверов записи в версионной архитектуре сразу попадают в таблицу , просто в засисимости от транзакции они видны или не видны.. Поэтому коммит в такой архитектуре ничего не делает - а просто увеличивает внутренний счетчик завершенных транзакций... Если на этом этапе перед коммитом еще запустить механизм проверки уникальности - то это в большинстве ситуций будет довольно большой излишней нагрузкой... Но если вам очень надо - то разработчики постгреса оставили для вас возможность включить механимзм проверки после коммита... смотрите например комманду SEt CONTARINT в части модификаторов DEFERRED | IMMEDIATE IMMEDIATE constraints are checked at the end of each statement. DEFERRED constraints are not checked until transaction commit. Each constraint has its own IMMEDIATE or DEFERRED mode. по моему это то что вам нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 13:08 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
4321ВОт нашел что-то о траблеме "версионности индексов" в Оракле, но не уверен, что фтему softwarerdimitr Мы говорили про "чисто версионный индекс", который бы позволил index-only scan. Для этого в ключ индекса надо внести transaction ID, который бы позволил определить видимость данной записи без чтения самой записи. Вот здесь и кроется прелесть ораклового подхода. Индекс ничего не знает про какие-то версии. Механизм блоков просто умеет вернуть версию блока, соответствующую транзакции; соответственно, транзакция получает актуальный для нее индекс практически так же, как получает актуальные для себя данные. Transaction ID же учитывается в более внутренних, нежели индекс, структурах.Здесь вроде бы о возможности index scan без заглядывания в таблицу, которая есть в оракле. В постгресе нету. (При выборках, это не касается транзакций.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 13:15 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatПри выборках, это не касается транзакций.Глупость сморозил. При выборках. Но как раз транзакций и видимости записей это касается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 13:22 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
domanix wrote: > Если на этом этапе перед коммитом еще запустить механизм проверки > уникальности - то это в большинстве ситуций будет довольно большой > излишней нагрузкой... > Но если вам очень надо - то разработчики постгреса оставили для вас > возможность > включить механимзм проверки после коммита... > смотрите например комманду SEt CONTARINT в части модификаторов DEFERRED > | IMMEDIATE > IMMEDIATE constraints are checked at the end of each statement. DEFERRED > constraints are not checked until transaction commit. Each constraint > has its own IMMEDIATE or DEFERRED mode. > по моему это то что вам нужно... Фиг там. UNIQUE и CHECK констрейнты в PostgreSQL отложить низзя. Это давний известный баг, из-за которого и UPDATE не всегда атомарный. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 13:22 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
domanixСтранно ... Ошибки быть не должно... Специально попробовал - ситуация описанная выше не воспроизводится.. Все работает как и должно... Вопрос - может есть конкурирущая незавершенная транзакция? Типа добавил - и не закомитил... а в другой транзакции - эти записи не видны - создается впечатление что таблица пустая но при добавлении нарываемся на кронфликт по ключу? Как известно уникальность ключей в индексах проверяется вне транзакции... Может в этом беда? а попробуй так: INSERT INTO test (code, name ) VALUES ('А01', 'Вася'); INSERT INTO test (code, name ) VALUES ('А02', 'Петя'); INSERT INTO test (code, name ) VALUES ('Б01', 'Саша'); INSERT INTO test (code, name ) VALUES ('Б02', 'Саша'); INSERT INTO test (code, name ) VALUES ('В01', 'Саша'); INSERT INTO test (code, name ) VALUES ('В02', 'Саша'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 14:50 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Все равно - не воспроизводится... у меня 8.1b3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 15:34 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
А база с какими настройками создана? charset какой? может и правда тут собака зарыта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 15:38 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
XMФиг там. UNIQUE и CHECK констрейнты в PostgreSQL отложить низзя. Это давний известный баг, из-за которого и UPDATE не всегда атомарный. Posted via ActualForum NNTP Server 1.3именно из-за неверсионности индексов отложить UNIQUE не удасца. И именно поэтому перед апдейтом скажем id=id+1 приходица отсортировывать набор (т.е. проворачивать его в ф-ии пробегом по сортированному набору). 2 LeXa NalBat Конкретно там (по сноске) - да - речь об индекс-скане. Но тот же механизм (если я его правильно просек) позволил бы развязать проблему проверки уникью по выходу (а не внутри транзакции - на каждой строке) - т.е. преодолеть тот же баг атомарности апдейта, и он же позволил бы развязать конкурирующие за некое значение уникью транзакции. (т.е. - "кто первый закоммитил - тот и прав, а тот, кто покурить вышел - _никого_не_держит, но получит отлуп при попытке коммита"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 16:52 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
psql 8.0.2 база - KOI8 локаль LANG=ru_RU.koi8r LC_CTYPE="ru_RU.koi8r" LC_NUMERIC="ru_RU.koi8r" LC_TIME="ru_RU.koi8r" LC_COLLATE="ru_RU.koi8r" LC_MONETARY="ru_RU.koi8r" LC_MESSAGES="ru_RU.koi8r" LC_PAPER="ru_RU.koi8r" LC_NAME="ru_RU.koi8r" LC_ADDRESS="ru_RU.koi8r" LC_TELEPHONE="ru_RU.koi8r" LC_MEASUREMENT="ru_RU.koi8r" LC_IDENTIFICATION="ru_RU.koi8r" LC_ALL= и все равно не дает сделать первичным ключом русские буквы :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 16:54 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
domanixВсе равно - не воспроизводится... у меня 8.1b3 может Мне стоит попробовать обновиться до твоей версии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 17:14 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
4321Конкретно там (по сноске) - да - речь об индекс-скане. Но тот же механизм (если я его правильно просек) позволил бы развязать проблему проверки уникью по выходу (а не внутри транзакции - на каждой строке) - т.е. преодолеть тот же баг атомарности апдейта, и он же позволил бы развязать конкурирующие за некое значение уникью транзакции. (т.е. - "кто первый закоммитил - тот и прав, а тот, кто покурить вышел - _никого_не_держит, но получит отлуп при попытке коммита").Даже боюсь размышлять о таких высоких материях со своей дилетантской позиции, потому что почти наверняка упущу какую-нибудь важную тонкость. Но, как я показал на примере, у древнего оракла (в котором тем не менее индекс скан есть) поведение аналогичное - транзакция зависает, а не получает отлуп при попытке коммита, как вы предлагаете. Правда, иное поведение у транзакции после зависания, если конкурирующую завершили коммитом. В постгресе отваливается вся транзакция - надо делать роллбэк, а в оракле только висевший стэйтмент, транзакцию можно продолжать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 17:55 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatкак я показал на примере, у древнего оракла...был невнимателен, "вспылил(с)" мдя-с .Таки трабла с "недо"версионностью как таковой (уникью обчий и в оракле для усих транзакций?)? Какого же ляда он тады атомарно уникью перестраивать горазд (внутри одной транзакции)? чё-то туманно это мине И что, отложить уникью в ём тоже низзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 18:11 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
4321уникью обчий и в оракле для усих транзакций?Каким экспериментом это можно проверить? 4321И что, отложить уникью в ём тоже низзя?Судя по доке можно. (Для доступа требуется регистрация.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 10:07 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat 4321уникью обчий и в оракле для усих транзакций?Каким экспериментом это можно проверить? 4321И что, отложить уникью в ём тоже низзя?Судя по доке можно. (Для доступа требуется регистрация.) спасибо за ссылку. Но оракла под рукой нету, а написанному даже в доке без теста верить не имею привычки. Разве как ввводным для теста и его трактовки. Т.ч. бодяжиться с регистрацией не стал. Но видимо по инсертам Оракла ведет себя именно так как и Постгря ( см. туточки ) Что для некоторых и там было неожиданностью (блокировка не апдейта, но инсерта). Т.ч. придеца иметь в виду возможность провисания транзакций и из-за инсертов в уникью. И по возможности избегать (по ссылке много бравых надежд, что ситуация, при правильном проектировании практицки невероятная, думаю - от избытка неоправданного оптимизма, хотя народец там и подкованный). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 11:13 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
ЗЫ. по поводу невозможности в Оракле NOWAIT-а при инсерте там (по ссылке) тоже есь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 11:34 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Господа, значит не видать мне первичного ключа русскими буковками да? ERROR: повторный ключ нарушает констрейнт UNIQUE "xpktest" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 12:52 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
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) Наверное у вас проблема в настройках ОС или постгреса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 15:46 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
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) Наверное у вас проблема в настройках ОС или постгреса. может нам стоит с Вами настройки постргереса сравнить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 16:27 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
gekoА какая у тебя OC? может настройками поделишься? может нам стоит с Вами настройки постргереса сравнить?У нас сисадмин занимается установкой оси, постгреса и других вещей. Я в этом почти не разбираюсь. :( Выполнить команду и показать ее выдачу могу. Какую команду? :) Ось: ~$ uname Linux ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 17:22 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat gekoА какая у тебя OC? может настройками поделишься? может нам стоит с Вами настройки постргереса сравнить?У нас сисадмин занимается установкой оси, постгреса и других вещей. Я в этом почти не разбираюсь. :( Выполнить команду и показать ее выдачу могу. Какую команду? :) Ось: ~$ uname Linux :( команд вывода конфигурации не знаю, файлик посмотреть бы postgresql.conf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 17:46 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
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'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 09:55 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
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 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 11:23 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
geko может стоит попытаться перейти на 8.0.3 ??? Можно. Но есть еще ряд интересных возможностей. Вставь куда-нибудь русские буквы и сделай потом select чтобы увидеть, что именно получилось в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 16:34 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
интересно, однако. а если сначала инсерт, а потом примари кей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2005, 17:41 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
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 | Миша играет Так ведь не должно быть .... ??? ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2005, 13:00 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
geko select * from test where name = 'Маша гуляет'; code | name -------+------------- 126 | Маша гуляет 127 | Миша играет (записей: 2) А можно explain ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2005, 15:05 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
И \d test; из psql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2005, 15:34 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2005, 20:40 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
хыхинтересно, однако. а если сначала инсерт, а потом примари кей? если делать инсерт без первичного ключа то все нормально вставляется и ошибки не вылетает, а как потом добавить первичный ключ к таблице??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2005, 20:45 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2005, 20:51 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
geko хыхинтересно, однако. а если сначала инсерт, а потом примари кей? если делать инсерт без первичного ключа то все нормально вставляется и ошибки не вылетает, а как потом добавить первичный ключ к таблице??? может так? ALTER TABLE "public"."table1" ALTER COLUMN "aaa" SET NOT NULL; ALTER TABLE "public"."table1" ADD CONSTRAINT "new_index" PRIMARY KEY ("aaa"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2005, 10:10 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
1. Попробуй дропнуть индекс и тогда сделать выборку - ситуация измениться? 2. Если не измениться, то что выдает следующий запрос? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2005, 10:24 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Funny_Falcon1. Попробуй дропнуть индекс и тогда сделать выборку - ситуация измениться? Забудь, я глупый. У тебя и так SeqScan :-) А второй вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2005, 12:30 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Funny_Falcon1. Попробуй дропнуть индекс и тогда сделать выборку - ситуация измениться? 2. Если не измениться, то что выдает следующий запрос? Код: plaintext а что это такое oprcode? oprcode --------- texteq (1 запись) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2005, 13:57 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Не получилось повторить.. Может это появилось только в 8.1.xx? create table test (code char(5) not nullname varchar(100) not nullCONSTRAINT xpktest PRIMARY KEY (code));INSERT INTO test (code name ) VALUES ('АБВ' 'Вася');INSERT INTO test (code name ) VALUES ('АБВГ' 'Петя');INSERT INTO test (code name ) VALUES ('АБВГД' 'Саша');select * from test order by name;explain analyze select * from test;select version(); ------------------------------------------------------------------------------ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2005, 14:12 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
ShweikНе получилось повторить.. Может это появилось только в 8.1.xx? Ты народ не пугай - у geko 8.0.2. Видно что-то не так с локалью в принципе на том компе, т.к. по-моему постгресс использует общие сишные функции для сравнения по локали. Но я могу ошибаться. Вобщем бред какой-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2005, 17:45 |
|
||
|
ERROR: duplicate key violates unique constraint
|
|||
|---|---|---|---|
|
#18+
Funny_Falcon ShweikНе получилось повторить.. Может это появилось только в 8.1.xx? Ты народ не пугай - у geko 8.0.2. Видно что-то не так с локалью в принципе на том компе, т.к. по-моему постгресс использует общие сишные функции для сравнения по локали. Но я могу ошибаться. Вобщем бред какой-то. Ладно, попытаюсь переустановить postgresql на более свежую... чуть попозже отпишу... и еще посоветуйте версию на которую обновиться можно... всем спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 11:09 |
|
||
|
|

start [/forum/topic.php?all=1&fid=53&tid=2006915]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 431ms |

| 0 / 0 |
