diff --git a/lib/SimpleSAML/Store/SQL.php b/lib/SimpleSAML/Store/SQL.php index 44599b9f9e4419248c05e6f96c879f2256feef95..a9223ddf9b967dadedc1cb82c37444a7207fa17f 100644 --- a/lib/SimpleSAML/Store/SQL.php +++ b/lib/SimpleSAML/Store/SQL.php @@ -242,13 +242,14 @@ class SQL extends Store $insertQuery->execute($data); return; } catch (PDOException $e) { - $ecode = (string) $e->getCode(); - switch ($ecode) { - case '23505': // PostgreSQL - break; - default: - Logger::error('Error while saving data: '.$e->getMessage()); - throw $e; + $duplicateInsertErrorCodes = [ + 'pgsql' => '23505', + 'sqlsrv' => '23000' + ]; + + if (!array_key_exists($this->driver, $duplicateInsertErrorCodes) || $duplicateInsertErrorCodes[$this->driver] !== (string) $e->getCode()) { + Logger::error('Error while saving data: '.$e->getMessage()); + throw $e; } }