Confluence 6 嘗試從 XML 備份中恢復時解決錯誤

錯誤多是由於數據庫忽然不可訪問而產生。也有多是你備份文件有問題,你須要找到你 XML 備份文件中違反數據庫規定的記錄修改這個記錄後再建立一個新的 XML 備份:java

  1. 在實例開始恢復的時候,請按照下面的指南來禁用批量更新(針對簡單的問題解決),啓用 SQL 日誌和SQL 查詢日誌,經過在 Enabling Detailed SQL Logging 頁面中描述的參數(with parameters)
  2. 一旦上面 3 個修改都完成了後,重啓 Confluence。
  3. 嘗試另一次恢復。
  4. 當你在恢復的時候失敗了,檢查你的日誌文件找到不能用 XML 轉換爲記錄的地方。針對使用 Confluence 分發包的用戶,檢查你 Confluence 的安裝目錄下的 /logs/ 目錄,檢查 atlassian-confluence.logcatalina.out 文件。正確的文件應當包含有 SQL 的調試日誌輸出。
  5. 滾動到文件的最下端,找到相關的錯誤信息,這個信息應該是與數據庫有關了,例以下面的錯誤信息:
    2006-07-13 09:32:33,372 ERROR [confluence.importexport.impl.ReverseDatabinder] endElement net.sf.hibernate.exception.ConstraintViolationException:
      could not insert: [com.atlassian.confluence.pages.Attachment#38]
    net.sf.hibernate.exception.ConstraintViolationException: could not insert: [com.atlassian.confluence.pages.Attachment#38]
    ...
    Caused by: java.sql.SQLException: ORA-01400: cannot insert NULL into ("CONFUSER"."ATTACHMENTS"."TITLE")
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    

    上面的示例標記了在你附件表中 ID = 38 的記錄有一個空的標題。sql

  6. 進入到你服務器建立的備份文件中,你應該有你數據庫使用的備份。若是你沒有這個的話,使用DBA 數據庫管理工具建立一個數據庫備份。
  7. 打開一個 DBA 數據庫管理工具,而後鏈接到原始的數據庫實例,在數據庫中找到須要的表。你須要修改這個表中的一些記錄。
  8. 但願找到數據庫中是哪一個表的那個對象,下面對應了內容存儲的表:
    • 頁面,博客頁面,評論(Pages, blogposts, comments) --> CONTENT 表
    • 附件(attachments )--> ATTACHMENTS 表
  9. 但願跟着上面示例中出現的錯誤,進入到附件表中,找到對象的 ID 爲 38 的記錄。這個記錄應該是一個 null 的標題。使用其餘附件中使用的標題爲指南,你可能還會遇到其餘的問題,請根據問題進行修改。
  10. 一旦上面的修改完成了,從新建立 XML 備份。
  11. 導入備份到新的版本中。
  12. 若是導入成功了,你須要將你 SQL 修改的日誌(SQL logging)從新改回來,你能夠從新啓用 批量更新(針對簡單的問題解決),禁用 SQL 日誌和SQL 查詢日誌。
  13. 重啓 Confluence

https://www.cwiki.us/display/CONFLUENCEWIKI/Troubleshooting+XML+backups+that+fail+on+restore數據庫

相關文章
相關標籤/搜索