【问题标题】:Catch duplicate key insert exception捕获重复键插入异常
【发布时间】:2014-11-05 15:53:38
【问题描述】:

我有一个名为id 的具有唯一主键列的表。有时,当我执行 INSERT 查询时,我会收到错误,因为 id 值已被使用。

我可以使用trycatch 捕获这个特定错误吗?

【问题讨论】:

  • 使用 try/catch 时什么不起作用?
  • 我做到了,但它没有抓住它。
  • 你能显示那个代码吗?
  • 你想特别捕捉主键存在错误吗?
  • 除了@sp00m 问的,你在你的catch块里放了哪个异常类?

标签: java mysql try-catch


【解决方案1】:

看起来 mysql 为重复的主键抛出 1062 错误代码。您可以检查您的 sql 异常的错误代码:

public static final int MYSQL_DUPLICATE_PK = 1062;

try{
    //code that throws sql exception
} catch(SQLException e){
    if(e.getErrorCode() == MYSQL_DUPLICATE_PK ){
        //duplicate primary key 
    }
}

请注意,此方法不跨数据库供应商,因为不同供应商可能对重复 PK 有不同的错误代码。

【讨论】:

  • 我认为SqlException 是班级,但不确定。检查特定错误代码的好主意 - 我不知道这是可能的。
  • 为了完整性 - 在 Oracle 下,我相信返回的错误代码是 1 see here
猜你喜欢
  • 2020-07-13
  • 2012-07-13
  • 2011-12-07
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多