From 4827bb48a56731a0ed6de1818c3a78674ae3a149 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Tue, 27 Jan 2026 11:45:10 -0800 Subject: [PATCH] More robust duplicate row detection. --- .../java/com/samskivert/depot/impl/jdbc/MySQLLiaison.java | 2 +- .../com/samskivert/depot/impl/jdbc/PostgreSQLLiaison.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) 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