diff --git a/neo4j/io/_bolt4.py b/neo4j/io/_bolt4.py index 4968332c3..2d6c74064 100644 --- a/neo4j/io/_bolt4.py +++ b/neo4j/io/_bolt4.py @@ -164,7 +164,10 @@ def route(self, database): def fail(md): from neo4j._exceptions import BoltRoutingError - if md.get("code") == "Neo.ClientError.Procedure.ProcedureNotFound": + code = md.get("code") + if code == "Neo.ClientError.Database.DatabaseNotFound": + return # surface this error to the user + elif code == "Neo.ClientError.Procedure.ProcedureNotFound": raise BoltRoutingError("Server does not support routing", self.unresolved_address) else: raise BoltRoutingError("Routing support broken on server", self.unresolved_address) @@ -512,7 +515,10 @@ def route(self, database): def fail(md): from neo4j._exceptions import BoltRoutingError - if md.get("code") == "Neo.ClientError.Procedure.ProcedureNotFound": + code = md.get("code") + if code == "Neo.ClientError.Database.DatabaseNotFound": + return # surface this error to the user + elif code == "Neo.ClientError.Procedure.ProcedureNotFound": raise BoltRoutingError("Server does not support routing", self.unresolved_address) else: raise BoltRoutingError("Routing support broken on server", self.unresolved_address) diff --git a/tests/integration/test_neo4j_driver.py b/tests/integration/test_neo4j_driver.py index 7de0b471b..4be1a2e15 100644 --- a/tests/integration/test_neo4j_driver.py +++ b/tests/integration/test_neo4j_driver.py @@ -81,7 +81,8 @@ def test_test_multi_db_specify_database(neo4j_uri, auth, target): assert "Database name parameter for selecting database is not supported in Bolt Protocol Version(3, 0)." in error.args[0] except ClientError as error: # FAILURE {'code': 'Neo.ClientError.Database.DatabaseNotFound' - This message is sent from the server - assert error.args[0] == "Unable to get a routing table for database 'test_database' because this database does not exist" + assert error.code == "Neo.ClientError.Database.DatabaseNotFound" + assert "test_database" in error.message def test_neo4j_multi_database_support_create(neo4j_uri, auth, target, requires_bolt_4x):