gpt4 book ai didi

sql - 违反唯一键约束

转载 作者:行者123 更新时间:2023-12-02 15:38:57 25 4
gpt4 key购买 nike

我正在使用grails,尝试在 Controller 中创建新的EducationType时遇到以下问题

2010-10-26 17:14:49,405 [http-8080-1] ERROR util.JDBCExceptionReporter  - Violation of UNIQUE KEY constraint 'UQ__educat
ion_type__0519C6AF'. Cannot insert duplicate key in object 'dbo.education_type'.
2010-10-26 17:14:49,409 [http-8080-1] ERROR errors.GrailsExceptionResolver - could not insert: [EducationType]; SQL [in
sert into education_type (version, name) values (?, ?)]; constraint [null]; nested exception is org.hibernate.exception.
ConstraintViolationException: could not insert: [EducationType]
org.springframework.dao.DataIntegrityViolationException: could not insert: [EducationType]; SQL [insert into education_t
ype (version, name) values (?, ?)]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationEx
ception: could not insert: [EducationType]
at org.jsecurity.web.servlet.JSecurityFilter.doFilterInternal(JSecurityFilter.java:382)
at org.jsecurity.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:180)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.exception.ConstraintViolationException: could not insert: [EducationType]
... 3 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Violation of UNIQUE KEY constraint 'UQ__education_type__0519
C6AF'. Cannot insert duplicate key in object 'dbo.education_type'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
... 3 more

如果我在 Controller 中设置了以下对象来创建这些对象,那么怎么可能会收到这样的消息:
class EducationType //the class
{
static constraints =
{
name(blank:false, unique:true)
}
}

//the block of code to do checking to not create duplicates
if(EducationType.findByName(type.toString())){
edType = EducationType.findByName(type.toString())
}else {
edType = new EducationType(name:type)
}

最佳答案

我建议改变你的约束

  static constraints = 
{
name(blank:false, nullable:false, unique:true)
}

我也将代码更改为此
   if ( type == null ) {
// error handle, i think null will set the value
// of the type to the string "null" and that will get
// saved
return
}


if( EducationType.findByName(type?.toString()) )
edType = EducationType.findByName(type.toString())
} else {
edType = new EducationType(name:type)
}

关于sql - 违反唯一键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4028305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com