62行目: 62行目:


== 削除ページの履歴の完全な削除 ==
== 削除ページの履歴の完全な削除 ==
全ての削除ページの履歴を完全に削除する場合は、まず、通常のページ削除機能を使用してページを削除する。<br>
これは、復元不可能になるため注意が必要である。<br>
<br>
<br>
次に、maintenanceディレクトリにあるdeleteArchivedRevisions.phpメンテナンススクリプトを実行する。<br>
全ての削除ページの履歴を完全に削除する場合は、まず、まず削除される件数を確認する。<br>
  # MediaWiki 1.40以降の場合
  # MediaWiki 1.40以降の場合
# まず削除される件数を確認
  php maintenance/run.php deleteArchivedRevisions または phpcli maintenance/run.php deleteArchivedRevisions
  php maintenance/run.php deleteArchivedRevisions または phpcli maintenance/run.php deleteArchivedRevisions
   
   
  # 削除を実行
  # MediaWiki 1.39以前の場合
php maintenance/deleteArchivedRevisions.php
<br>
削除を実行する。<br>
これにより、削除されたリビジョンが保存されているarchiveテーブルが消去されて、削除されたページのテキストも削除される。<br>
# MediaWiki 1.40以降の場合
  php maintenance/run.php deleteArchivedRevisions --delete または phpcli maintenance/run.php deleteArchivedRevisions --delete
  php maintenance/run.php deleteArchivedRevisions --delete または phpcli maintenance/run.php deleteArchivedRevisions --delete
   
   
76行目: 79行目:
  php maintenance/deleteArchivedRevisions.php --delete または phpcli maintenance/deleteArchivedRevisions.php --delete
  php maintenance/deleteArchivedRevisions.php --delete または phpcli maintenance/deleteArchivedRevisions.php --delete
<br>
<br>
これにより、削除されたリビジョンが保存されているアーカイブテーブルが消去されて、削除されたページのテキストも削除される。<br>
次に、参照されていないテキストデータも削除するため、テキストデータをクリーンアップする。
# MediaWiki 1.40以降の場合
php maintenance/run.php purgeOldText --purge
# MediaWiki 1.39以前の場合
php maintenance/purgeOldText.php --purge または phpcli maintenance/purgeOldText.php --purge
<br>
<br>
ただし、アーカイブテーブルからエントリを直接削除する場合は (TRUNCATE TABLE archive;)、<br>
削除記録を消去する。<br>
リンクされたテキストレコードを削除するため、purgeOldText.phpメンテナンススクリプトを使用する必要がある。<br>
# MariaDB または MySQLにログインする。
<br>
#: <pre>mysql -u mochiu_wiki -p</pre>
古いリビジョンを削除するだけでは、アクティブなWikiのデータの多くがテキストテーブルで占められているため、通常はあまり役に立たない。<br>
# MediaWikiが使用しているデータベースを選択する。
#: <pre>use <データベース名></pre>
# 削除記録を消去する。
#: <syntaxhighlight lang="sql">
-- 全ての削除記録を削除する場合
DELETE FROM logging WHERE log_type = 'delete';
-- 特定の期間の削除記録を削除する場合
DELETE FROM logging
    WHERE log_type = 'delete'
    AND log_timestamp BETWEEN '20240101000000' AND '20241231235959';
-- 特定のユーザによる削除記録を削除する場合
DELETE FROM logging
    WHERE log_type = 'delete'
    AND log_user = ユーザーID;
</syntaxhighlight>
<br>
<br>
データベースの設定によっては、リビジョンを削除した後、SQLコマンド<code>OPTIMIZE TABLE text, archive</code>を実行してアーカイブすることもできる。<br>
データベースの設定によっては、リビジョンを削除した後、SQLコマンド<code>OPTIMIZE TABLE text, archive</code>を実行してアーカイブすることもできる。<br>