我使用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,CUSTOMFIELD,CUSTOMFIELDCONFIG,PARENTOPTIONID,SEQUENCE,customvalue,optiontype,disabled)VALUES(?, ?,?,?,?,?,?,?)(违反PRIMARY KEY约束'PK_customfieldoption'。无法在对象'dbo.customfieldoption'中插入重复键。重复键值为(10815)。))
我认为这是因为主键是一个自动增量值,我通过查询插入了这个值。 有人可以帮我这个。我想重置自动增量序列会有所帮助。
答案 0 :(得分: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)
答案 1 :(得分:1)
简答:
尝试修改UI应用程序的代码,使其执行不包含PK列的SQL语句dbo.customfieldoption.ID。
长答案:
您的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 (?, ?, ?, ?, ?, ?, ?)
答案 2 :(得分:0)
感谢您的快速响应,我找到了一个文件,它提供了一个sql语句来重置序列ID。我将序列id重置为比当前最大值(PK值)更大的数字。这解决了问题
链接到文档:https://confluence.atlassian.com/pages/viewpage.action?pageId=193299577
问候, 米赞