4.2 utf8mb4 veritabanı yükseltmesini yeniden başlat


14

WP'yi utf8mb4 yükseltme gereksinimlerine uymayan eski bir sunucudayken 4.2'ye güncelledim .

Bu gereksinimlere uyan başka bir sunucuya geçtim, ancak WP bu veritabanı yükseltmesini artık başlatmayacak: /wp-admin/upgrade.php diyor Your WordPress database is already up-to-date. wp_postMasamı utf8mb4'e manuel olarak ayarlamaya çalıştım, ancak tüm özel karakterleri “ ” oldu.

maybe_convert_table_to_utf8mb4Tüm özel karakterleri kaybetmeden basit bir yükseltmede zorla başlatmanın herhangi bir yolu var mı?

Teşekkürler!

Yanıtlar:


5

Bence şu anda sorunuzun cevabı "Hayır".

maybe_convert_table_to_utf8mb4Bu yayında belirtilen gereksinimleri karşılamayan bir sunucuda WP 4.3'ün ötesine yükseltildikten sonra siteleri tetiklemenin kolay bir yolu yoktur :

https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade/

WP kaynak koduna baktığımızda, bunu 4.2'nin güncelleme dizisinden 4.3'e (artık hiç yükseltmesi olmayan 4.2'de artık mevcut değil) taşıdıklarını, belki de daha fazla kullanıcının gemide olmasını umduklarını unutmayın.

Bu sizin cevabınız ve berbat ama diğerlerinden daha doğru ¯_ (ツ) _ / ¯

Şu anda, bir işlem kancasına dayalı olarak yükseltme sırasının özünü tetiklemenizi sağlayan basit bir komut dosyası oluşturmaya çalışıyoruz. İstikrarlı ve çalışır hale gelebilirsek, geri gelmeye ve başkalarının kullanması için burada paylaşmaya çalışırız.

Temel planımızın gerçek db kısmını çıkarmak upgrade_430(), db güncelleme sisteminden izole etmek ve manuel olarak tetiklemektir.

DÜZENLEME: AŞAĞIDAKİ ÇÖZÜM

Komut dosyasını tetiklemenin kolay bir yolu olmasa da, işte elle upgrade_430()açılan bir çözüm, ancak bir drop-in olarak tasarlanmıştır.

https://gist.github.com/carlalexander/4106cfaaf405cec454ba195631bcb6bc

Bunu bir eklentiye koyabilir veya işlevlerinize yapıştırabilirsiniz. Php. Her iki durumda da GEÇİCİ olmalıdır.

Ziyaret ettiğinizde otomatik olarak tetiklenecek şekilde ayarlanmıştır https://yoursite.com/?update-utf8bm4=1

Bu, yalnızca bir kez çalışmasını ve ne zaman seçeceğinizi garanti eder (büyük veritabanları için biraz zaman alabilir ve kimsenin bir yayını düzenlerken düzenlemesini istemezsiniz).

GET'in tetiklenmesini istemiyorsanız sadece add_actionparçayı ve parçayı çıkarın if (!isset($_GET['update-utf8bm4'])).

Tekrar: BİTİRDİĞİNDE KALDIR, etrafta böyle bir GET tetikleyici bırakmak istemezsin :)


2

Tabii ki, bir şey denemeden önce veritabanının yedeğini alın, ancak veritabanının orijinal sürümü ile çalışacaksınız - iki şeyi denerdim: WordPress veritabanı onarım ve bakımı ve phpMyAdmin'in optimize tabloları:

Bu, çok fazla bilgi WP Bilgi Tabanı olan bu sayfadan geldi , ancak bu satırı sitenizin wp-config.php dosyasına ekleyerek başlıyorsunuz:

define('WP_ALLOW_REPAIR', true);

sonra http://yoursite.com/wp-admin/maint/repair.php adresine gidin.

İki seçenekli bir sayfa görmelisiniz: 'Veritabanını Onar' ve 'Veritabanını Onar ve Optimize Et'.

'Veritabanını Onar ve Optimize Et'i tıklayın ve komut dosyasına çalışması için zaman verin. Başarılı bir şekilde çalıştıktan sonra, çeşitli tabloların durumunu bildiren güncelleme mesajları alırsınız.

Çalışır çalıştırılmaz, çok önemli , wp-config.php dosyasına yeni eklediğiniz wp_allow_repair satırını kaldırın, wp-config.php dosyasından silin.

Bu işe yaramazsa, phpMyAdmin'in tablo optimizasyonunu deneyebilirsiniz, ancak WordPress'in yardımı olmadıysa, bu da olmayabilir. Ben son onarım çalıştırdığınız veritabanının aynı sürümü üzerinde denemek istiyorum.

PhpMyAdmin'e gidin, veritabanınızı seçin, sayfanın en altına gidin, veritabanındaki tüm tabloları seçmek için 'Tümünü Kontrol Et'i işaretleyin ve yanındaki seçim menüsünden "Tabloyu En İyileştir" i seçin. İşte bu, otomatik olarak başlayacak.

İşte daha fazla ayrıntı ve ekran görüntüsü: WPMUDev

Bu iki adım - tek başına veya birlikte çalışmazsa, bunları ters sırada çalıştırmak için yedekleme veritabanınızın başka bir kopyasını kullanmayı deneyebilirsiniz ... İyi şanslar!


1
'Veritabanını Onarın ve Optimize Edin.' yeniden başlat maybe_convert_table_to_utf8mb4(herhangi bir WP güncellemesi gibi)? Cevapta bahsetmedin;)
Joan

Merhaba Joan, gözetim için özür dilerim ... Notlarda herhangi bir özel söz görmedim, hayır, ancak WordPress 4.2+'de optimizasyonu çalıştırdığınız sürece yapabileceğini tahmin ederim. Temel notlardan: [ make.wordpress.org/core/tag/wpdb/]
Vanessa King

Tüm UTF8 tabloları vardı ve onarım ve optimizasyon koştu. Onları utf8mb4'e dönüştürmedi. Ayrıca MyIsam olmayan ancak InnoDB ve zaten utf8mb4 tabloları onarılmamış veya optimize edilmemiştir.
rhand

Evet, bu üzgünüm sorunun cevabı değil.
jerclarke

0

Harmanlama veritabanı tablosu değiştirmeye çalıştınız mı? Lütfen şunu deneyin:

Phpmyadmin'e giriş yapın> veritabanınızı seçin> İşlemler> şimdi Harmanlama'yı açılır menüden "utf8mb4_unicode_ci" olarak değiştirin veya eski sunucunuzda kullanılana değiştirin.

Umarım senin için çalışır.

ekran görüntüsüne bakın: http://prntscr.com/8ip1ro/direct

Unutmayın: Eski sunucunuzdan PC'nize sql dosyasını dışa aktarır ve herhangi bir metin editörü ile açarsanız ve özelleştirin ve kaydedin .. o zaman lütfen sql dosyasını kaydettiğinizde kontrol edin Metin Düzenleyici "Kodlama" Utf-8 .. ekran görüntüme bakın: http://prntscr.com/8ip2nr/direct

Teşekkürler


(Ben de) bu işlevi başlatmışım gibi denedim, aynı sonuçlar ( her yerde). WP işlevini kolayca yeniden başlatmanın bir yolunu arıyorum…
Joan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.