diff --git a/product/ZSQLCatalog/SQLCatalog.py b/product/ZSQLCatalog/SQLCatalog.py
index f7ff3c43fb16d824fad9bc76c82ba51e7635cbdc..a2e0d8c82409a57de600b4d4cd8c70fa7d277fb1 100644
--- a/product/ZSQLCatalog/SQLCatalog.py
+++ b/product/ZSQLCatalog/SQLCatalog.py
@@ -101,12 +101,15 @@ except ImportError:
   def getTransactionalVariable():
     return {}
 
-def generateCatalogCacheId(method_id, self, *args, **kwd):
-  # XXX: getPath is overkill for a unique cache identifier.
+def getInstanceID(instance):
+  # XXX: getPhysicalPath is overkill for a unique cache identifier.
   # What I would like to use instead of it is:
   #   (self._p_jar.db().database_name, self._p_oid)
   # but database_name is not unique in at least ZODB 3.4 (Zope 2.8.8).
-  return str((method_id, self.getCacheSequenceNumber(), self.getPath(),
+  return instance.getPhysicalPath()
+
+def generateCatalogCacheId(method_id, self, *args, **kwd):
+  return str((method_id, self.getCacheSequenceNumber(), getInstanceID(self),
     args, kwd))
 
 class transactional_cache_decorator: