How to Remove all Previous Versions of a Page Manually in the Database Using SQL Commands

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

問題

  • Due to the Bug  CONF-29166 - Getting issue details... STATUS  (Unable to delete blog version), Currently there is no way to delete the old version of a blog page through UI.
  • You would like to bulk remove previous versions of a page

データベースの操作方法が不明な場合はデータベース管理者にお問い合わせください。先に進む前にデータベースの完全なバックアップを作成するようにしてください。これらの SQL コマンドはいくつかの環境でテストされ、意図するように動作することが確認されています。しかしながら、特定の状況や Confluence の新しいバージョンでは動作しない場合があります。これは、Confluence のデータベース構造に変更が行われている可能性があるためです。このため、問題が発生して巻き戻しを行う必要がある場合に備えたデータベース バックアップは必須です。

回避策

これらのクエリは次の場合にのみ動作します。

  • ページのタイトルが過去のバージョンを通じて変更されていない。
  • Confluence インスタンス内に同じタイトルを持つページがほかに存在しない。

ページの履歴を削除するためのプロセスは次のとおりです。

  1. First, stop Confluence.
  2. Create a full database backup prior to running these queries against your database.
  3. You must get the page name you would like to remove. Simply copy the page name exactly the same way it is written.

  4. Obtain the number of the current version of the page/blog post. This is the version that you would like to save. This is obtainable by going to the Page/Blog post > Tools > Page History > Take note of the "current" version
  5. Run the following queries in the database, in order, since the database contains constraints that will prevent foreign keys and primary keys to be violated if you try to remove one which is mentioned in another table. Replace the <page name> with the actual page name you have copied before:

    データベースの変更を行う場合は必ず事前にバックアップを取得してください。可能な場合は、まずステージング サーバーで SQL コマンドの変更、挿入、更新、または削除を行うようにします。


    (info) The following SQL has not been tested in Confluence 5.7 and above

    create table TEMP_CONTENT like content;
    
    insert into TEMP_CONTENT select * from content where title = '<page name>' and version != <current version number>;
    
    delete from links where contentid in (select tc.CONTENTID from TEMP_CONTENT tc);
    
    delete from imagedetails where attachmentid in(select attachmentid from attachments where pageid in (select tc.CONTENTID from TEMP_CONTENT tc));
    
    delete from attachments where pageid in (select tc.CONTENTID from TEMP_CONTENT tc);
    
    delete from notifications where contentid in (select tc.CONTENTID from TEMP_CONTENT tc);
    
    delete from confancestors where descendentid in (select tc.CONTENTID from TEMP_CONTENT tc);
    
    delete from contentproperties where contentid in (select tc.CONTENTID from TEMP_CONTENT tc);
    
    delete from usercontent_relation where targetcontentid in (select tc.CONTENTID from TEMP_CONTENT tc);
    
    delete from bodycontent where contentid in (select tc.CONTENTID from TEMP_CONTENT tc);
    
    delete from content where contentid in (select tc.CONTENTID from TEMP_CONTENT tc);
    
    drop table TEMP_CONTENT;
  6. Update this current version to become version 1

    update content set version = 1 where title = '<page name>'
  7. Lastly, check if the operation is complete from the following SQL query:

    select * from content where title = '<page name>'

    * This should return with one value, with version = 1

  8. Rebuild the indexes from scratch for server or Rebuild the indexes from scratch for DC
  9. 変更内容を反映するには、 Confluence を再起動します。

For example, Below is a situation where a blog with the name "Test 584 Blog" with 5 versions, and you would like to delete all 4 versions before version 5:

Therefore, replace <page name> with Test 584 Blog and replace <current version number> with 5 in the SQL query given in the "Workaround" section




最終更新日 2023 年 7 月 7 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.