|
Please refer to Troubleshooting failed XML site backups instead. |
If creating an XML backup of Confluence fails with a stack trace error similar to this, your database has become slightly corrupted. This is likely to have occurred while using the embedded database. If you are using the embedded database, be aware that it is bundled for evaluation purposes and does not offer full transactional integrity in the event of sudden power loss, which is why an external database is recommended for production use.
To correct the corruption, increase the level of logging to identify the cause and manually correct any invalid entries in the database. To do this:
log4j.logger.com.atlassian.confluence.importexport.impl.XMLDatabinder=DEBUG, confluencelog log4j.additivity.com.atlassian.confluence.importexport.impl.XMLDatabinder=false |
2005-08-24 00:00:33,743 DEBUG [confluence.importexport.impl.XMLDatabinder] Writing object: com.atlassian.confluence.core.ContentPermission with ID: 5 to XML. 2005-08-24 00:00:33,743 DEBUG [confluence.importexport.impl.XMLDatabinder] Writing property: type 2005-08-24 00:00:33,743 DEBUG [confluence.importexport.impl.XMLDatabinder] Writing property: group 2005-08-24 00:00:33,743 DEBUG [confluence.importexport.impl.XMLDatabinder] Writing property: expiry 2005-08-24 00:00:33,743 DEBUG [confluence.importexport.impl.XMLDatabinder] Writing property: content [ERROR] LazyInitializer - Exception initializing proxy <net.sf.hibernate.ObjectNotFoundException: No row with the given identifier exists: 2535, of class: com.atlassian.confluence.core.ContentEntityObject>net.sf.hibernate.ObjectNotFoundException: No row with the given identifier exists: 2535, of class: com.atlassian.confluence.core.ContentEntityObject at net.sf.hibernate.ObjectNotFoundException.throwIfNull(ObjectNotFoundException.java:24) at net.sf.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:1946) at net.sf.hibernate.proxy.LazyInitializer.initialize(LazyInitializer.java:53) at net.sf.hibernate.proxy.LazyInitializer.initializeWrapExceptions(LazyInitializer.java:60) at net.sf.hibernate.proxy.LazyInitializer.getImplementation(LazyInitializer.java:164) at net.sf.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:108) at com.atlassian.confluence.core.ContentEntityObject$$EnhancerByCGLIB$$cc2f5557.hashCode(<generated>) at java.util.HashMap.hash(HashMap.java:261) at java.util.HashMap.containsKey(HashMap.java:339) at com.atlassian.confluence.importexport.impl.XMLDatabinder.toGenericXML(XMLDatabinder.java:155) |
CONTENTLOCK table with id = 5 and reset CONTENT column property so that it no longer points to the id 2535 (the id of an entry that no longer exists). If you are wondering which table a certain object is stored in, here's a rough guideline: Pages, blogposts, comments are stored in the CONTENT table, attachments in the ATTACHMENTS table.