Relancez la mise à niveau de la base de données utf8mb4 4.2

14

J'ai mis à jour WP vers 4.2 alors qu'il était sur un ancien serveur, cela ne correspond pas aux exigences de mise à niveau de utf8mb4 .

J'ai déménagé vers un autre serveur qui répond à ces exigences, mais WP ne lancera plus cette mise à niveau de la base de données: /wp-admin/upgrade.php dit Your WordPress database is already up-to-date. J'ai essayé de régler ma wp_posttable sur utf8mb4 manuellement mais tous mes caractères spéciaux sont devenus « ».

Est-il possible de forcer le lancement de la maybe_convert_table_to_utf8mb4dans une simple mise à niveau, sans perdre tous mes caractères spéciaux?

Merci!

Joan
la source

Réponses:

5

Je pense que la réponse à votre question en ce moment est "Non".

Il n'y a pas de moyen facile de déclencher maybe_convert_table_to_utf8mb4sur des sites une fois qu'ils ont déjà été mis à niveau au-delà de WP 4.3 sur un serveur qui ne répondait pas aux exigences énoncées dans cet article:

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

Notez que, en regardant le code source de WP, il semble qu'ils soient passés de la séquence de mise à jour de 4.2 à 4.3 (il n'est plus présent dans 4.2, qui n'a désormais plus de mises à niveau), espérant peut-être obtenir plus d'utilisateurs à bord.

Voilà donc votre réponse et ça craint mais c'est plus précis que les autres ¯_ (ツ) _ / ¯

Nous travaillons actuellement sur la création d'un script simple qui vous permet de déclencher l'essence de la séquence de mise à niveau basée sur un crochet d'action. Si nous pouvons le rendre stable et fonctionnel, nous essaierons de revenir et de le partager ici pour que d'autres puissent l'utiliser.

Notre plan de base consiste à extraire la partie réelle de la base de données upgrade_430(), à l'isoler du système de mise à jour de la base de données et à la déclencher manuellement.

EDIT: SOLUTION CI-DESSOUS

Bien qu'il n'y ait pas de moyen facile de déclencher le script, voici une solution de contournement codée à la main, basée sur upgrade_430()mais conçue comme un drop-in.

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

Vous pouvez mettre cela dans un plugin, ou simplement le coller dans votre functions.php. Dans tous les cas, cela devrait être TEMPORAIRE.

Il est configuré pour se déclencher automatiquement lorsque vous visitez https://yoursite.com/?update-utf8bm4=1

Cela garantit qu'il ne s'exécute qu'une seule fois et vous pouvez choisir quand (pour les grandes bases de données, cela peut prendre un certain temps et vous ne voulez pas que quelqu'un modifie un article pendant qu'il se produit).

Si vous ne souhaitez pas que le déclencheur GET supprime simplement la add_actionpièce et la if (!isset($_GET['update-utf8bm4']))pièce.

Encore une fois: SUPPRIMER CECI UNE FOIS TERMINÉ, vous ne voulez pas laisser un déclencheur GET comme celui-ci traîner :)

jerclarke
la source
2

Bien sûr, si cela va de soi, faites une sauvegarde de la base de données avant d'essayer quoi que ce soit, mais vous travailleriez avec la version originale de la base de données - j'essaierais deux choses: la réparation et la maintenance de la base de données WordPress et les tables d'optimisation de phpMyAdmin:

Cela vient de cette page, qui contient beaucoup d'informations WP Knowledgebase , mais vous commencez par ajouter cette ligne au wp-config.php de votre site:

define('WP_ALLOW_REPAIR', true);

allez ensuite sur http://votresite.com/wp-admin/maint/repair.php

Vous devriez voir une page avec deux options: «Réparer la base de données» et «Réparer et optimiser la base de données».

Cliquez sur «Réparer et optimiser la base de données» et donnez au script le temps de s'exécuter. Une fois qu'ils ont été exécutés avec succès, vous recevrez des messages de mise à jour vous informant de l'état des différentes tables.

Dès qu'il est exécuté, très important , supprimez la ligne wp_allow_repair que vous venez d'ajouter à wp-config.php, supprimez-la du fichier wp-config.php.

Si cela ne fonctionne pas, vous pouvez essayer l'optimisation des tableaux de phpMyAdmin, mais si WordPress n'a pas aidé, cela peut ne pas l'être non plus. Je l'essayerais sur la même version de la base de données sur laquelle vous avez exécuté la dernière réparation.

Allez dans phpMyAdmin, sélectionnez votre base de données, faites défiler vers le bas de la page, cochez «Tout vérifier» pour sélectionner toutes les tables de la base de données, puis sélectionnez «Optimiser la table» dans le menu de sélection à côté. Ça y est, ça va démarrer automatiquement.

Voici plus de détails et de captures d'écran: WPMUDev

Si ces deux étapes ne fonctionnent pas, seules ou ensemble, vous pouvez essayer d'utiliser une autre copie de votre base de données de sauvegarde pour les exécuter dans l'ordre inverse ... Bonne chance!

Vanessa King
la source
1
Est-ce que «Réparer et optimiser la base de données». relancer maybe_convert_table_to_utf8mb4(comme toute mise à jour WP)? Vous ne l'avez pas mentionné dans la réponse;)
Joan
Salut Joan, désolé pour la surveillance… Je n'en ai pas vu de mention spécifique dans les notes, non, mais je suppose que ce serait le cas, tant que vous exécutiez l'optimisation dans WordPress 4.2+. À partir des notes principales: [ make.wordpress.org/core/tag/wpdb/]
Vanessa King
Avait toutes les tables UTF8 et a exécuté la réparation et l'optimisation. Ne les a pas convertis en utf8mb4. Les tables qui n'étaient pas MyIsam mais InnoDB et déjà utf8mb4 n'ont pas non plus été réparées ou optimisées.
puis
Ouais ce n'est pas une réponse à la question désolé.
jerclarke
0

Avez-vous essayé de modifier le classement de la table de base de données? Veuillez essayer ceci:

Connectez-vous à phpmyadmin> sélectionnez votre base de données> Opérations> changez maintenant le classement du menu déroulant en "utf8mb4_unicode_ci" ou changez ce qui était utilisé sur votre ancien serveur.

J'espère que cela fonctionnera pour vous.

voir capture d'écran: http://prntscr.com/8ip1ro/direct

Rappelez-vous: Si vous exportez le fichier sql de votre ancien serveur vers votre PC et l'ouvrez avec n'importe quel éditeur de texte ... et personnalisez et enregistrez .. alors veuillez vérifier quand vous enregistrez le fichier sql Text Editor "Encoding" est Utf-8 .. voir ma capture d'écran: http://prntscr.com/8ip2nr/direct

Merci

NoDiv_NoClass
la source
C'est ce que j'ai essayé (aussi) comme si je lançais la fonction, mêmes résultats ( partout). Vous cherchez un moyen de relancer facilement la fonction WP…
Joan