1

MSSQL server 2008用作我的 Web 应用程序 (JIRA) 的数据库,几天前我通过数据库插入了一些值。现在,当我尝试通过 UI 添加值时,出现以下异常。

com.atlassian.jira.exception.DataAccessException:org.ofbiz.core.entity.GenericEntityException:插入时:[GenericEntity:CustomFieldOption][id,10815][sequence,7][value,TEST][customfieldconfig,10400][parentoptionid ,null][disabled,N][customfield,10300](执行以下操作时出现 SQL 异常:INSERT INTO dbo.customfieldoption(ID、CUSTOFIELD、CUSTOMFIELDCONFIG、PARENTOPTIONID、SEQUENCE、customvalue、optiontype、disabled)VALUES (?, ?, ? , ?, ?, ?, ?, ?) (违反主键约束“PK_customfieldoption”。无法在对象“dbo.customfieldoption”中插入重复键。重复键值为 (10815)。))

我相信这是因为主键是一个自动增量值,我通过查询插入了这个值。有人可以帮我解决这个问题吗?我想重置自动增量序列会有所帮助。

4

3 回答 3

2

希望这可以帮助!仅供参考,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)
于 2013-04-18T06:24:44.237 回答
1

简短的回答:

尝试修改 UI 应用程序的代码,使其执行不包含 PK 列 dbo.customfieldoption.ID 的 SQL 语句。

长答案:

您的 UI 应用程序尝试执行以下 SQL 语句。

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

上面的 SQL 语句似乎包含 PK 列的值,即 dbo.customfieldoption.ID。如果为数据库启用了自动增量,那么您的 UI 应用程序不需要包含 PK 列的值。

尝试修改 UI 应用程序的代码,使其执行不包含 dbo.customfieldoption.ID 的 SQL 语句。SQL 语句应该与下面的类似。

INSERT INTO dbo.customfieldoption (CUSTOMFIELD, CUSTOMFIELDCONFIG, PARENTOPTIONID, SEQUENCE, customvalue, optiontype, disabled) VALUES (?, ?, ?, ?, ?, ?, ?)
于 2013-04-18T06:27:06.673 回答
0

感谢您的快速响应,我找到了一个提供 sql 语句来重置序列 ID 的文档。我将序列 id 重置为比当前最大 (PK 值) 更大的数字。这解决了问题

链接到文档:https ://confluence.atlassian.com/pages/viewpage.action?pageId=193299577

问候,米赞

于 2013-04-18T07:53:17.207 回答