diff --git a/src/main/java/com/samskivert/depot/impl/jdbc/MySQLLiaison.java b/src/main/java/com/samskivert/depot/impl/jdbc/MySQLLiaison.java index 85c8ea9..4b11fb8 100644 --- a/src/main/java/com/samskivert/depot/impl/jdbc/MySQLLiaison.java +++ b/src/main/java/com/samskivert/depot/impl/jdbc/MySQLLiaison.java @@ -23,7 +23,7 @@ public class MySQLLiaison extends BaseLiaison public boolean isDuplicateRowException (SQLException sqe) { String msg = sqe.getMessage(); - return (msg != null && msg.indexOf("Duplicate entry") != -1); + return (sqe.getErrorCode() == 1062) || (msg != null && msg.indexOf("Duplicate entry") != -1); } @Override // from DatabaseLiaison diff --git a/src/main/java/com/samskivert/depot/impl/jdbc/PostgreSQLLiaison.java b/src/main/java/com/samskivert/depot/impl/jdbc/PostgreSQLLiaison.java index d061b52..716d5b7 100644 --- a/src/main/java/com/samskivert/depot/impl/jdbc/PostgreSQLLiaison.java +++ b/src/main/java/com/samskivert/depot/impl/jdbc/PostgreSQLLiaison.java @@ -21,8 +21,9 @@ public class PostgreSQLLiaison extends BaseLiaison // from DatabaseLiaison public boolean isDuplicateRowException (SQLException sqe) { - String msg = sqe.getMessage(); - return (msg != null && msg.indexOf("duplicate key") != -1); + // PostgreSQL duplicate key error code is 23505 + String state = sqe.getSQLState(), msg = sqe.getMessage(); + return ("23505".equals(state)) || (msg != null && msg.indexOf("duplicate key") != -1); } // from DatabaseLiaison