3
2
1

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

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

    Commentコメントを追加...

    1 回答

    1.  
      3
      2
      1

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

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

      参考ナレッジベース

      (警告) ナレッジベースを目的としてページ内のマクロに指定されている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 = '<スペースキー>')))

      (警告) DBはPostgreSQL想定です。

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

      (エラー) ページの編集はページ履歴が残りますが、上記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. 蒼龍

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

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

      Commentコメントを追加...