diff --git a/lib/SimpleSAML/Error/UnserializableException.php b/lib/SimpleSAML/Error/UnserializableException.php
index 9798a29a1b25098dda16c0b3b61ac21ae0a405d9..9a5995c04431c41dccc9da13dc6a355ccfc64200 100644
--- a/lib/SimpleSAML/Error/UnserializableException.php
+++ b/lib/SimpleSAML/Error/UnserializableException.php
@@ -19,6 +19,12 @@ class SimpleSAML_Error_UnserializableException extends SimpleSAML_Error_Exceptio
 
 		$msg = get_class($original) . ': ' . $original->getMessage();
 		$code = $original->getCode();
+
+		if (!is_int($code)) {
+			/* PDOException uses a string as the code. Filter it out here. */
+			$code = -1;
+		}
+
 		parent::__construct($msg, $code);
 
 		$this->setBacktrace(SimpleSAML_Utilities::buildBacktrace($original));