1 Востаннє редагувалося miroslav.chandler (27.08.2012 17:51:02)

Тема: PostresSq - Duplicate key value violates unique constraint

Напишу тут шоб потім знати де шукати, може комусь і пригодиться (:

Буває така кака.
duplicate key value violates unique constraint

Стається від того, шо насупне значення, яке має присвоїтися через sequence вже присутнє. Найчастіше це стається від того, шо хтось поправив таблу руками.
Фіксим.

select setval('pages_id_seq', (select max(id) + 1 from pages));
Подякували: 0xDADA11C7, Q-bart3

2 Востаннє редагувалося taburyak (24.04.2017 13:59:34)

Re: PostresSq - Duplicate key value violates unique constraint

Тільки почав розбиратись з БД. Потребую допомоги.
Visual Studio C#:

На початку завантажую таблицю:

this.hardness_DetectorTableAdapter.Fill(this.measureDatabaseDataSet.Hardness_Detector);

Десь треба додати данні в базу. Першим параметром йде "id" рядка. Цифра 1 стоїть просто щоб був int, звісно це помилка і вже на другому рядку буде "duplicate key value violates unique constraint". То запит про допомогу саме про це. Що вставити замість "1", щоб новий рядок отримував унікальне ID автоматично?

hardness_DetectorTableAdapter.Insert(1,
                                     DateTime.Now,
                                     diameterBall,
                                     forceBall,
                                     diameterMillimetr,
                                     hardness,
                                     imageToByteArray((Bitmap)snapshot.Clone()));

Таблиця така:

CREATE TABLE [dbo].[Hardness Detector] (
    [Id]                INT        DEFAULT ((0)) NOT NULL,
    [MeasureDatatime]   DATETIME   NULL,
    [DiameterBall]      FLOAT NULL,
    [AppliedForce]      FLOAT NULL,
    [DiameterFootprint] FLOAT NULL,
    [Hardness]          FLOAT (53) NULL,
    [MeasureImage]      IMAGE      NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

3

Re: PostresSq - Duplicate key value violates unique constraint

miroslav.chandler написав:

Напишу тут шоб потім знати де шукати, може комусь і пригодиться (:

Буває така кака.
duplicate key value violates unique constraint

Стається від того, шо насупне значення, яке має присвоїтися через sequence вже присутнє. Найчастіше це стається від того, шо хтось поправив таблу руками.
Фіксим.

select setval('pages_id_seq', (select max(id) + 1 from pages));

Або при переносі даних, коли треба зберегти ID'ішки.