このサイトはAtlassian製品に関わるエンジニア有志で運営するコミュニティサイトです。コミュニティサイトに登録された情報については免責事項となります。

Questions for Confluence license has expired.

Please purchase a new license to continue using Questions for Confluence.

DBからページを編集したい

 
3
2
1

大量のページにユーザーマクロを挿入する必要が出てきたのでDBを使ってマクロを挿入しようと思っているのですが、DB上でページを編集してもConfluenceの画面に反映されません。

どうやったらDB上からConfluenceのページを編集できるでしょうか?

    CommentAdd your comment...

    1 answer

    1.  
      3
      2
      1

      DB操作は自己責任になるのでバックアップは忘れずに。

      そのうえで参考ナレッジベースの通り bodycotent テーブルを更新すれば変更できるかと。

      参考ナレッジベース

      (warning) ナレッジベースを目的としてページ内のマクロに指定されているURLとかを変える方法です。


      例えば、とあるスペースのすべてのページ(ブログ、下書き、履歴を含む)の先頭に hello ユーザマクロを追加するとなったら以下のようなSQLになるかと思います。


      UPDATE bodycontent SET body = concat('<ac:structured-macro ac:name="hello" ac:schema-version="1"><ac:parameter ac:name="Name">world</ac:parameter></ac:structured-macro>',body) WHERE contentid IN (SELECT contentid FROM bodycontent WHERE contentid IN (SELECT contentid FROM content WHERE spaceid IN (SELECT spaceid FROM spaces WHERE spacekey = '<スペースキー>')))

      (warning) DBはPostgreSQL想定です。

      (info) SQLのスペースキーは読み替えてください。

      (error) ページの編集はページ履歴が残りますが、上記SQL操作だとページのXMLデータを直接変更しているためページ履歴は残りません。


      あとConfluenceはページ内容をキャッシュしているため

      DB操作後に管理画面でキャッシュをフラッシュするか(稼働中のDB操作は推奨できませんが…)

      Confluence停止、DBバックアップ、DB操作、Confluence起動の手順が必要です。

      あと最後に必ずインデックス再構築もしておいてください。


      1. Shuzaburo Doba

        私も bodycontent テーブル の body カラムを更新することで変更されました。

        ただし、共同編集が有効になっている場合、
        そのページを編集すると以前のページの情報が表示されました。

        関連しそうな https://confluence.atlassian.com/confkb/how-to-manually-edit-a-page-title-through-the-database-with-synchrony-enabled-942838925.html の内容を試してみても変わらず...

        共同編集を無効にすると問題ありませんでした。

      2. 蒼龍

        ありがとうございました。

        無事挿入させることができました。

      CommentAdd your comment...