Atur ulang Post IDs menjadi kurang dari 64bit integer

8

Saya telah menjalankan Wordpress selama bertahun-tahun dan memiliki sekitar 26000 posting.

Pada titik tertentu, id posting saya telah melebihi integer 32bit dan saya sekarang dikunci untuk menggunakan Wordpress pada sistem 64 bit.

Saya melihat posting dengan ID seperti 4863166253.

Saya ingin beralih hosting saya ke server bertenaga rendah seperti raspberry pi yang 32bit.

Apakah ada cara untuk me-reset ID ID sehingga semuanya di bawah 2 miliar?

Anda dapat membaca laporan bug Wordpress saya di sini

Terima kasih.

Tandai Waters
sumber
Ini adalah salah satu plugin Anda yang mengarahkan Anda ke sana, saya kira post_2_post tapi itu hanya dugaan. Anda harus benar-benar memahami mengapa Anda memiliki jumlah yang begitu tinggi (tidak ada revisi dalam jumlah nyata yang akan membawa Anda ke sana, kecuali jika itu lagi plugin yang membuatnya) dan baru Anda dapat mulai merencanakan cara memperbaikinya.
Mark Kaplun

Jawaban:

5

Jawaban ini adalah cara saya akan ambil untuk memecahkan masalah jika saya harus menghadapinya, itu berarti tidak yang jawaban tetapi salah satu kemungkinan.

Semua operasi yang saya sarankan harus dijalankan pada server pengembangan / lokal pada cadangan database dan bukan pada produksi atau pada database asli.

Jika Anda memiliki 26.000 posting tetapi memposting id seperti 4.863.166.253 ada zillions id yang tidak digunakan.

Untuk mengatasi masalah ini, Anda perlu:

Langkah 1

  • hapus id pos yang tidak digunakan. (pos sampah, revisi)
  • anak yatim yang dihapus memposting entri meta
  • menghapus entri hubungan taksonomi anak yatim

Ada plugin untuk ruang lingkup, tetapi bisa dilakukan dengan menggunakan query SQL mentah sederhana.

Langkah 2

Atur ulang id pos mengubahnya menjadi mulai dari 1. Ini dapat dilakukan dengan menggunakan kombinasi PHP + MySQL: jika Anda mengambil kolom post id sebagai array (mis. Via $wpdb->get_col()), kunci array (bertambah 1) akan menjadi id posting baru untuk posting yang id saat ini dalam nilai array.

Perhatikan bahwa id tulisan harus diubah di:

  • meja pos
  • tabel hubungan taksonomi
  • memposting tabel meta

Saya sarankan Anda menjalankan rutinitas seperti itu pada himpunan bagian tulisan menggunakan hasil paginasi dan bukan pada ribuan baris secara keseluruhan.

Langkah 3

Setel AUTO_INCREMENTindeks pada tabel posting ke jumlah posting +1.

Selesai

Pada akhir proses ini, id posting Anda yang lebih tinggi harus dengan mudah di dalam batas integer 32bit.

Cegah batas posting tercapai lagi

  • Nonaktifkan pos revisi atau batasi jumlahnya (lihat Codex ).

  • Pindahkan posting lama (2 tahun? 5?) Ke blog terpisah di lingkungan multisite, misalnya site1-archive.example.comuntuk posting di site1.example.com.

    Ini dapat dilakukan dengan menggunakan eksportir WordPress dengan opsi rentang tanggal.

    Jika Anda berencana untuk melakukan ini, jauh lebih baik jika dilakukan sebelum mengatur ulang id posting (langkah # 2 di atas), dengan cara ini kedua 2 blog dapat memiliki id posting yang lebih rendah.

    Tentu saja setelah itu Anda juga harus menempatkan cara untuk mengalihkan url posting yang diarsipkan ke url baru.

gmazzap
sumber