2013-04-18 5 views
1

Я использую MSSQL server 2008 в качестве базы данных для своего веб-приложения (JIRA). Несколько дней назад я вставил некоторые значения через базу данных. Теперь, когда я пытаюсь добавить значения через пользовательский интерфейс, я получаю следующее исключение.Повторяющееся исключение первичного ключа Сервер MSSQL 2008

com.atlassian.jira.exception.DataAccessException: org.ofbiz.core.entity.GenericEntityException: при вставке: [GenericEntity: CustomFieldOption] [ID, 10815] [последовательность, 7] [значение, ТЕСТ] [ customfieldconfig, 10400] [parentoptionid, null] [disabled, N] [customfield, 10300] (SQL Exception при выполнении следующего: INSERT INTO dbo.customfieldoption (ID, CUSTOMFIELD, CUSTOMFIELDCONFIG, PARENTOPTIONID, SEQUENCE, customvalue, optiontype, disabled) VALUES (?,?,?,?,?,?,?,?) (Нарушение ограничения PRIMARY KEY «PK_customfieldoption». Невозможно вставить дублирующий ключ в объект «dbo.customfieldoption». Значение повторяющегося ключа - (10815).))

Я верю это связано с тем, что первичный ключ является значением автоматического прироста, и я вставил это значение через запрос. Может кто-то, пожалуйста, помогите мне в этом. Я думаю, что сброс последовательности автоинкрементов поможет.

ответ

2

Надеюсь, это поможет! FYI, SQL Server использует то, что называется личность не автоинкрементным

-- First check what value is being used 
dbcc checkident('tableName',noreseed) 
-- Then you can "reseed" it to whatever value you want. If you use 10815, the value that will be used is 10816 
dbcc checkident('tableName',reseed,10815) 
1

Короткий ответ:

Попробуйте изменить коды приложения пользовательского интерфейса таким образом, что он выполняет SQL заявление, которое не включает в себя столбец PK , dbo.customfieldoption.ID.

Длинный ответ:

Ваше приложение UI пытались выполнить следующую инструкцию SQL.

INSERT INTO dbo.customfieldoption (ID, CUSTOMFIELD, CUSTOMFIELDCONFIG, PARENTOPTIONID, SEQUENCE, customvalue, optiontype, disabled) VALUES (?, ?, ?, ?, ?, ?, ?, ?) 

SQL-выше утверждение, кажется, включает в себя значение для столбца PK, который является dbo.customfieldoption.ID. Если для базы данных активировано автоматическое увеличение, то вашему пользовательскому интерфейсу не нужно включать значение для столбца PK.

Попробуйте изменить коды своего пользовательского интерфейса так, чтобы он выполнял инструкцию SQL, которая НЕ включает dbo.customfieldoption.ID. Оператор SQL должен быть похож на приведенный ниже.

INSERT INTO dbo.customfieldoption (CUSTOMFIELD, CUSTOMFIELDCONFIG, PARENTOPTIONID, SEQUENCE, customvalue, optiontype, disabled) VALUES (?, ?, ?, ?, ?, ?, ?) 
0

Спасибо за быстрый ответ, я нашел документ, который предоставил инструкцию sql для сброса идентификатора последовательности. Я сбросил идентификатор последовательности на большее число, чем самое большое (значение PK). этот решен вопрос

ссылку на документ: https://confluence.atlassian.com/pages/viewpage.action?pageId=193299577

С уважением, Мизан

Смежные вопросы