4.2 utf8mb4データベースアップグレードの再起動


14

古いサーバー上でWPを4.2に更新しましたが、これはutf8mb4のアップグレード要件と一致しません。

これらの要件を満たす別のサーバーに移動しましたが、WPはこのデータベースアップグレードをもう起動しません:/wp-admin/upgrade.phpに述べていYour WordPress database is already up-to-dateます。wp_postテーブルを手動でutf8mb4 に設定しようとしましたが、すべての特殊文字が「 」になりました。

maybe_convert_table_to_utf8mb4特別な文字をすべて失うことなく、単純なアップグレードで強制的に起動する方法はありますか?

ありがとう!

回答:


5

今のあなたの質問に対する答えは「いいえ」だと思います。

maybe_convert_table_to_utf8mb4この投稿で説明されている要件を満たしていないサーバーでWP 4.3を超えてアップグレードされたサイトでトリガーする簡単な方法はありません。

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

WPのソースコードを見ると、これは4.2の更新シーケンスから4.3に移動したようです(4.2には存在しないため、アップグレードはまったく行われていません)。

だからそれはあなたの答えであり、それは吸うが、他よりも正確です¯_(ツ)_ /¯

現在、アクションフックに基づいてアップグレードシーケンスの本質をトリガーできる単純なスクリプトの作成に取り組んでいます。安定して動作するようになったら、戻って他の人が使用できるようにここで共有しようとします。

基本的な計画は、の実際のデータベース部分を抽出し、upgrade_430()それをデータベース更新システムから分離し、手動でトリガーすることです。

編集:以下のソリューション

スクリプトをトリガーする簡単な方法はありませんが、ここでupgrade_430()はドロップインとして設計されていますが、手作業でコーディングされた回避策があります。

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

これをプラグインに入れるか、functions.phpに貼り付けるだけです。いずれにせよ、一時的なものでなければなりません。

アクセスすると自動的にトリガーされるように設定されています https://yoursite.com/?update-utf8bm4=1

これにより、1回だけ実行され、いつ選択できるかが保証されます(大規模なデータベースの場合は時間がかかる可能性があり、実行中に投稿を誰にも編集させたくない)。

GETトリガーを使用したくない場合は、add_actionパーツとパーツを削除するだけif (!isset($_GET['update-utf8bm4']))です。

繰り返しますが、完了したらこれを削除します。このようなGETトリガーを残したくありません:)


2

もちろん、言うまでもなく、何かを試す前にデータベースのバックアップを作成しますが、データベースの元のバージョンで作業します。WordPressデータベースの修復と保守、およびphpMyAdminの最適化テーブルの2つを試します。

これは多くの情報WP Knowledgebaseがあるこのページから来ましたが、あなたのサイトのwp-config.phpにこの行を追加することから始めます:

define('WP_ALLOW_REPAIR', true);

次に、http://yoursite.com/wp-admin/maint/repair.phpにアクセスします

「データベースの修復」と「データベースの修復と最適化」という2つのオプションがあるページが表示されます。

「データベースの修復と最適化」をクリックして、スクリプトを実行する時間を与えます。正常に実行されると、さまざまなテーブルのステータスを知らせる更新メッセージが表示されます。

非常に重要な実行後すぐに、wp-config.phpに追加したwp_allow_repair行を削除し、wp-config.phpファイルから削除します。

それが機能しない場合は、phpMyAdminのテーブル最適化を試すことができますが、WordPressが役に立たなかった場合は、どちらでもない可能性があります。最後の修復を実行したデータベースと同じバージョンで試してみます。

phpMyAdminに移動し、データベースを選択し、ページの一番下までスクロールし、[すべてチェック]をオンにしてデータベース内のすべてのテーブルを選択し、その隣の選択メニューから[テーブルの最適化]を選択します。それだけで、自動的に開始されます。

詳細とスクリーンショットは次のとおりです 。WPMUDev

これら2つの手順が(単独でも、一緒でも)うまくいかない場合は、バックアップデータベースの別のコピーを使用して、逆の順序で実行してみてください。


1
「データベースの修復と最適化」を行います。再起動しますmaybe_convert_table_to_utf8mb4(WPの更新と同様)?あなたは答えでそれを言及しなかった;)
ジョアン

こんにちは、ジョーン、監視にごめんなさい…私はノートでそれについての具体的な言及を見ていません、いいえ、しかし、もしあなたがWordPress 4.2+で最適化を実行している限り、そうすることができれば推測するでしょう。コアノートから:[ make.wordpress.org/core/tag/wpdb/]
ヴァネッサキング

すべてのUTF8テーブルがあり、修復と最適化を実行しました。それらをutf8mb4に変換しませんでした。また、MyIsamではなくInnoDBであり、すでにutf8mb4であるテーブルは、修復も最適化もされていません。
-rhand

ええ、これはごめんなさいという質問に対する答えではありません。
jerclarke

0

データベーステーブルの照合順序を変更しようとしましたか?これを試してください:

phpmyadminにログイン>データベースを選択>操作>ドロップダウンから「utf8mb4_unicode_ci」に照合を変更するか、古いサーバーで使用されていたものに変更します。

私はそれがあなたのために働くことを望みます。

スクリーンショットを見る:http : //prntscr.com/8ip1ro/direct

要確認:SQLファイルを古いサーバーからPCにエクスポートし、任意のテキストエディターで開き、カスタマイズして保存する場合は、SQLファイルを保存するタイミングを確認してください。テキストエディター「エンコード」はUtf-8 ..私のスクリーンショットを参照してください:http : //prntscr.com/8ip2nr/direct

ありがとう


これは、私が関数を起動しているかのように(あまりにも)試みたもので、同じ結果(すべての場所で)です。WP機能を簡単に再起動する方法を探しています…
Joan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.