投稿IDを64ビット整数未満にリセット


8

私は長年Wordpressを実行しており、約26000の投稿があります。

ある時点で、投稿IDが32ビット整数を超え、64ビットシステムでWordpressを使用するようになりました。

4863166253のようなIDの投稿が表示されています。

32ビットのラズベリーpiのような低電力サーバーにホスティングを切り替えたい

すべてが20億未満になるように投稿IDをリセットする方法はありますか?

私のWordpressバグレポートはここで読むことができます

ありがとう。


これはあなたをそこに導くあなたのプラグインの一つです、私はpost_2_postを推測しますが、それは単なる推測です。なぜあなたがそんなに高い数を持っているのかを実際に理解する必要があり(実際のリビジョンの量はそこにあなたをもたらすことはありません、再びそれがそれらを作成するプラグインでない限り)、それからそれを修正する方法を計画し始めることができます。
Mark

回答:


5

この答えは、私がそれに直面しなければならなかった場合に問題を解決するために取る方法です。それは答えではなく、可能性の1つであることを意味します。

私が提案するすべての操作は、本番や元のデータベースではなく、データベースのバックアップの開発/ローカルサーバーで実行する必要があります。

投稿が26,000あるが、投稿IDが4,863,166,253の場合、使用されていないIDが数十億あります。

この問題を解決するには、次のことを行う必要があります。

ステップ1

  • 未使用の投稿IDを削除します。(ゴミ箱の投稿、改訂)
  • 削除された孤立した投稿のメタエントリ
  • 孤立した分類関係エントリを削除する

スコープにはプラグインがありますが、単純な生のSQLクエリを使用して実行できます。

ステップ2

投稿IDをリセットして、1から開始するように変更します。これは、PHP + MySQLの組み合わせを使用して実行できます。投稿ID列を配列として取得すると(例:を介して$wpdb->get_col())、配列キー(1ずつ増加)が新しい投稿IDになります。現在のIDが配列値にある投稿。

投稿IDは次の場所で変更する必要があることに注意してください。

  • ポストテーブル
  • 分類関係テーブル
  • 投稿メタテーブル

このようなルーチンは、全体で数千行ではなく、ページ分割された結果を使用して投稿のサブセットで実行することをお勧めします。

ステップ3

AUTO_INCREMENT投稿テーブルインデックスを投稿数+ 1に設定します。

できた

このプロセスの最後に、より高い投稿IDは32ビット整数制限内に簡単に収まるはずです。

投稿制限に再度到達しないようにする

  • ポストリビジョンを無効にするか、数を制限します(コーデックスを参照)。

  • 古い投稿(2年?5?)をマルチサイト環境の別のブログに移動します(例:site1-archive.example.comの投稿)site1.example.com

    これは、日付範囲オプション付きのWordPressエクスポーターを使用して行うことができます。

    これを行う予定の場合は、投稿IDをリセットする前に(上記のステップ2)、2つのブログの投稿IDを低くすることができます。

    もちろん、その後に、アーカイブされた投稿のURLを新しいURL にリダイレクトする方法も導入する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.