1 つのスペース エクスポートに複数のオブジェクトが含まれ、別のサーバーまたはクラウド インスタンスへのインポート時にエラーが発生して失敗する

お困りですか?

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

コミュニティに質問


プラットフォームについて: 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 は除く

要約

Confluence Server または Cloud インスタンスにスペース エクスポート ファイルをインポートしようとすると "Could not execute statement" or "Duplicate key"" エラーで失敗する。スペース エクスポートは別の Confluence Server または Cloud インスタンスである。

atlassian-confluence.log ファイル内では、スペース キーの制約違反についての例が確認できる。

ERROR: duplicate key value violates unique constraint "uk_jp1ad5yufsih5r7lqrygakpug"
OR
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Violation of UNIQUE KEY constraint 'UK_jp1ad5yufsih5r7lqrygakpug'

環境

この問題は Confluence Server および Data Center 6.x 以降で確認されています。 

原因 

この問題の原因にはさまざまな問題が考えられます。 

サーバー ベースのインスタンス

スペース エクスポートがサーバー インスタンスから取得されている場合、 CONFSERVER-45278 - Getting issue details... STATUS のデータベースの不一致によって発生している可能性があります。別の既知の問題としてページの移動に関連するものがあります。この問題の完全な説明については CONFSERVER-77826 - Getting issue details... STATUS をご確認ください。ここには、スペースのエクスポート前に問題をプロアクティブに確認して解決するために利用できるクエリも含まれています。 

クラウド ベースのインスタンス

クラウドのスペース エクスポートに別のスペースのコンテンツまたはスペースのメタデータが含まれている可能性があることがわかっています。

CONFCLOUD-62976 - Getting issue details... STATUS

CONFCLOUD-64563 - Getting issue details... STATUS

CONFDEV-62751 - Getting issue details... STATUS

CONFCLOUD-72415 - Getting issue details... STATUS

診断

サーバー ベースのインスタンス

スペース エクスポートがサーバー インスタンスで作られたものの場合は次のクエリを使い、サーバー インスタンスのデータベースがこの問題の影響を受けているかどうかを確認できます。 

SELECT COUNT(*)
FROM CONTENT
JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
WHERE CONTENT.SPACEID != xpage.SPACEID
UNION ALL
SELECT COUNT(*)
FROM CONTENT
JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
WHERE CONTENT.SPACEID != xpage.SPACEID
UNION ALL
SELECT COUNT(*)
FROM CONTENT
JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
WHERE CONTENT.SPACEID != xpage.SPACEID;

クエリでゼロのみが返される場合、ご利用のデータベースはこの問題の影響を受けていません。この場合はエクスポート/インポートの問題のトラブルシューティング支援についてアトラシアン サポートにお問い合わせください。クエリでゼロ以外の値が返される場合、ご利用のデータベースは影響を受けています。 

(info) このクエリはスペースのインポート先ではなくエクスポート元の Confluence データベースに対して実行する必要があります。

クラウド ベースのインスタンス

Confluence Cloud インスタンスから取得した単一のスペースをインポートする場合、エクスポート ファイルには 1 つのスペースのオブジェクトのみが含まれる必要があります。複数のスペースのオブジェクトが含まれているかどうかを確認するには、entities.xml ファイルに対して次のコマンドを実行します。このファイルはスペースのエクスポート ファイルから抽出できます。 

grep -A3 'object class="Space"' entities.xml

複数の結果が返される場合、エクスポート ファイルに余分なスペース オブジェクトが含まれ、Confluence インスタンスへのインポート前に修正が必要です。 

ソリューション

エクスポート元の Confluence データベースで見つかった問題

エクスポート元のインスタンスのデータベースがこの問題を影響を受けていることがわかったら (上記の診断を参照)、不一致を修正する必要があります。

  1. ご利用のデータベースの完全なバックアップを作成します。この修正を本番環境に適用する前にステージングまたはテスト環境に適用することを強く推奨します。ここでは PostgreSQL および MySQL を利用していますが、これらの SQL ステートメントはサポート対象の任意のデータベースで動作します。
  2. Confluence を停止します。 

  3. ご利用のデータベースで次の SQL ステートメントを実行します。 

    Postgres のクエリ
    UPDATE CONTENT set SPACEID = subquery.validSpaceId
    FROM
    (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PARENTID IS NULL) subquery
    WHERE CONTENT.CONTENTID = subquery.CONTENTID;
    
    UPDATE CONTENT set SPACEID = subquery.validSpaceId
    FROM
    (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PARENTID IS NOT NULL) subquery
    WHERE CONTENT.CONTENTID = subquery.CONTENTID;
    
    UPDATE CONTENT set SPACEID = subquery.validSpaceId
    FROM
    (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PAGEID IS NULL) subquery
    WHERE CONTENT.CONTENTID = subquery.CONTENTID;
    
    UPDATE CONTENT set SPACEID = subquery.validSpaceId
    FROM
    (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PAGEID IS NOT NULL) subquery
    WHERE CONTENT.CONTENTID = subquery.CONTENTID;
    
    UPDATE CONTENT set SPACEID = NULL, PARENTID = NULL
    FROM
    (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID) subquery
    WHERE CONTENT.CONTENTID = subquery.CONTENTID;
    
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID;
    MySQL のクエリ
    /* Create a set of tables to process the content updated */
    DROP TABLE IF EXISTS UPDATE_CONTENT_TMP;
    
    /* Query block 1 */
    CREATE TABLE UPDATE_CONTENT_TMP AS (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PARENTID IS NULL);
    
    UPDATE CONTENT, UPDATE_CONTENT_TMP set CONTENT.SPACEID = UPDATE_CONTENT_TMP.validSpaceId
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Query block 2 */
    CREATE TABLE UPDATE_CONTENT_TMP AS (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PARENTID IS NOT NULL);
    
    UPDATE CONTENT, UPDATE_CONTENT_TMP set CONTENT.SPACEID = UPDATE_CONTENT_TMP.validSpaceId
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Query block 3 */
    CREATE TABLE UPDATE_CONTENT_TMP AS (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PAGEID IS NULL);
    
    UPDATE CONTENT, UPDATE_CONTENT_TMP set CONTENT.SPACEID = UPDATE_CONTENT_TMP.validSpaceId
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Query block 4 */
    CREATE TABLE UPDATE_CONTENT_TMP AS (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PAGEID IS NOT NULL);
    
    UPDATE CONTENT, UPDATE_CONTENT_TMP set CONTENT.SPACEID = UPDATE_CONTENT_TMP.validSpaceId
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Query block 5 */
    CREATE TABLE UPDATE_CONTENT_TMP AS (SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID);
    
    UPDATE CONTENT, UPDATE_CONTENT_TMP set CONTENT.SPACEID = NULL, CONTENT.PARENTID = NULL
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Final check */
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID;
    Microsoft SQL Server のクエリ
    /* Create a set of tables to process the content updated */
    DROP TABLE IF EXISTS UPDATE_CONTENT_TMP;
    
    /* Query block 1 */
    SELECT CONTENT.CONTENTID as CONTENTID, xpage.SPACEID as validSpaceId
    INTO UPDATE_CONTENT_TMP
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PARENTID IS NULL;
    
    UPDATE CONTENT 
    set CONTENT.SPACEID = UPDATE_CONTENT_TMP.validSpaceId
    FROM CONTENT
    INNER JOIN UPDATE_CONTENT_TMP
    ON CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Query block 2 */
    SELECT CONTENT.CONTENTID as CONTENTID, xpage.SPACEID as validSpaceId
    INTO UPDATE_CONTENT_TMP
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PARENTID IS NOT NULL;
    
    UPDATE CONTENT
    set CONTENT.SPACEID = UPDATE_CONTENT_TMP.validSpaceId
    FROM CONTENT
    INNER JOIN UPDATE_CONTENT_TMP
    ON CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Query block 3 */
    SELECT CONTENT.CONTENTID as CONTENTID, xpage.SPACEID as validSpaceId
    INTO UPDATE_CONTENT_TMP
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PAGEID IS NULL;
    
    UPDATE CONTENT
    set CONTENT.SPACEID = UPDATE_CONTENT_TMP.validSpaceId
    FROM CONTENT
    INNER JOIN UPDATE_CONTENT_TMP
    ON CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Query block 4 */
    SELECT CONTENT.CONTENTID as CONTENTID, xpage.SPACEID as validSpaceId
    INTO UPDATE_CONTENT_TMP
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PAGEID IS NOT NULL;
    
    UPDATE CONTENT
    set CONTENT.SPACEID = UPDATE_CONTENT_TMP.validSpaceId
    FROM CONTENT
    INNER JOIN UPDATE_CONTENT_TMP
    on CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Query block 5 */
    SELECT CONTENT.CONTENTID as CONTENTID, xpage.SPACEID as validSpaceId 
    INTO UPDATE_CONTENT_TMP
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID;
    
    UPDATE CONTENT
    set CONTENT.SPACEID = NULL, CONTENT.PARENTID = NULL
    FROM CONTENT
    INNER JOIN UPDATE_CONTENT_TMP
    ON CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID
    WHERE CONTENT.CONTENTID = UPDATE_CONTENT_TMP.CONTENTID;
    
    DROP TABLE UPDATE_CONTENT_TMP;
    
    /* Final check */
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID;
    Oracle のクエリ
    MERGE INTO CONTENT c
    USING (
    SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PARENTID IS NULL
    ) subquery
    ON (c.CONTENTID = subquery.CONTENTID)
    WHEN MATCHED THEN 
    UPDATE SET c.SPACEID = subquery.validSpaceId;
    
    MERGE INTO CONTENT c
    USING (
    SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PARENTID IS NOT NULL
    ) subquery
    ON (c.CONTENTID = subquery.CONTENTID)
    WHEN MATCHED THEN 
    UPDATE SET c.SPACEID = subquery.validSpaceId;
    
    MERGE INTO CONTENT c
    USING (
    SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PAGEID IS NULL
    ) subquery
    ON (c.CONTENTID = subquery.CONTENTID)
    WHEN MATCHED THEN 
    UPDATE SET c.SPACEID = subquery.validSpaceId;
    
    MERGE INTO CONTENT c
    USING (
    SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    AND xpage.PAGEID IS NOT NULL
    ) subquery
    ON (c.CONTENTID = subquery.CONTENTID)
    WHEN MATCHED THEN 
    UPDATE SET c.SPACEID = subquery.validSpaceId;
    
    MERGE INTO CONTENT c
    USING (
    SELECT CONTENT.CONTENTID as contentId, xpage.SPACEID as validSpaceId
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    ) subquery
    ON (c.CONTENTID = subquery.CONTENTID)
    WHEN MATCHED THEN 
    UPDATE SET SPACEID = NULL, PARENTID = NULL;
    
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID;
    
    


    ゼロ以外の値が返される場合はこの手順を繰り返してステートメントを再度実行します。 

    ゼロのみが返される場合は問題が修正済みであるため、次の手順に進めます。

  4. Confluence を再起動します。
  5.  > [一般設定] > [キャッシュ管理] に移動して Content Objects のキャッシュをフラッシュします。  


これで、Confluence Server サイトからスペースを再度エクスポートし、別の Confluence サイトにインポートできます。  

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

クラウド製品のスペース エクスポートで見つかった問題

この挙動を軽減するにはいくつかの方法があります。 

オプション 1: SED コマンドによるリネーム

1 つめのオプションでは、entities.xml ファイルに含まれる余分な不要のスペース キーを、宛先インスタンスに存在しないスペース キーにリネームします。管理者は、宛先インスタンスに存在しないスペース キーを選択する必要があります。重複すると結果として同じ挙動になります。また、この方法では、インポートの完了後、インポートの結果発生した余分なスペースを管理者が削除する必要があります。このため、あとから削除できるよう、インポートされる余分なスペースの一覧を保持しておくことが非常に重要です。

(info) この例には、大文字小文字の値両方のための sed コマンドが含まれます。破損を防ぐため、記載された例に従って大文字と小文字を利用してください。

  1. 安全のため、entities.xml ファイルのバックアップ コピーを作成します
  2. ファイルを編集し、OLDKEY  NEWKEY  それぞれの値を置き換えて次のコマンドを実行します。 

    sed -i -e 's/\[OLDKEY\]/\[NEWKEY\]/g' entities.xml
    sed -i -e 's/spaceKey=OLDKEY/spaceKey=NEWKEY/g' entities.xml
    sed -i -e 's/\[OLDKEY:/\[NEWKEY:/g' entities.xml
    sed -i -e 's/key=OLDKEY\]/key=NEWKEY\]/g' entities.xml
    sed -i -e 's/<spaceKey>OLDKEY<\/spaceKey>/<spaceKey>NEWKEY<\/spaceKey>/g' entities.xml
    sed -i -e 's/ri:space-key="OLDKEY"/ri:space-key="NEWKEY"/g' entities.xml
    sed -i -e 's/ri:space-key=OLDKEY/ri:space-key=NEWKEY/g' entities.xml
    sed -i -e 's/<ac:parameter ac:name="spaces">OLDKEY<\/ac:parameter>/<ac:parameter ac:name="spaces">NEWKEY<\/ac:parameter>/g' entities.xml
    sed -i -e 's/<ac:parameter ac:name="spaceKey">OLDKEY<\/ac:parameter>/<ac:parameter ac:name="spaceKey">NEWKEY<\/ac:parameter>/g' entities.xml
    sed -i -e 's/<property name="lowerDestinationSpaceKey"><!\[CDATA\[NEWKEY\]\]><\/property>/<property name="lowerDestinationSpaceKey"><!\[CDATA\[newkey\]\]><\/property>/g' entities.xml
    sed -i -e 's/<property name="lowerKey"><!\[CDATA\[NEWKEY\]\]><\/property>/<property name="lowerKey"><!\[CDATA\[newkey\]\]><\/property>/g' entities.xml
    sed -i -e 's/<property name="lowerKey"><!\[CDATA\[oldkey\]\]><\/property>/<property name="lowerKey"><!\[CDATA\[newkey\]\]><\/property>/g' entities.xml
    sed -i -e 's/spaceKey=OLDKEY/spaceKey=NEWKEY/g' entities.xml
    sed -i -e 's/spacekey=oldkey/spacekey=newkey/g' entities.xml

  3. クラウドのエクスポートされた zip ファイルから exportDescriptor.properties ファイルを見つけ、スペース キーの値のリネームがそこでも行われるようにします。
  4. ファイルの編集が完了したらディレクトリ全体を再度圧縮します。 
  5. インポートを再度行う前に、次のドキュメントに従ってデータベース内の余分なデータをクリーンアップするようにします。スペース インポートの失敗後、スペース データが残っているために再インポートが行えない
オプション 2: 新しい Confluence サーバー環境から新しいエクスポート ファイルを再生成する

In this method, rather than clean up the export file itself, we can import the file as is into a clean Confluence instance which will ensure that a duplicate space key error will be not be thrown on import. From there, we can generate a new export of the singular intended space key which will not contain any references to the extra space.

(info) 宛先インスタンスと同じバージョンのクリーンな Confluence インスタンスを用意するようにします。 

  1. 新しい Confluence インスタンスを立ち上げます。
  2. Import the Cloud export file as is and make sure it completes successfully.
  3. Run the following SQL queries to check if the Confluence server instance is impacted as well:

    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PAGEID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PARENTID = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID
    UNION ALL
    SELECT COUNT(*)
    FROM CONTENT
    JOIN CONTENT xpage ON CONTENT.PREVVER = xpage.CONTENTID
    WHERE CONTENT.SPACEID != xpage.SPACEID;

    If any non-zero values are returned, follow resolution detailed under "For Issues Found within the Source Confluence Database"

  4. Head to Content Tools > Export of the desired space. Select XML > Full Export and create the new export file.
  5. 宛先インスタンスへのインポートを再度行う前に、次のドキュメントに従ってデータベース内の余分なデータをクリーンアップするようにします。スペース インポートの失敗後、スペース データが残っているために再インポートが行えない




最終更新日 2023 年 6 月 16 日

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

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