データベース互換性の問題の処理
この記事では、互換性の懸念やテーブルの照合順序エラーを含む、さまざまな MySQL データベース互換性の問題を解決するための詳細な手順を提供します。
互換性の問題
データベースの互換性の問題を回避するために、ビルド サーバーとインストーラー サーバー間のデータベースのバージョンをできるだけ近づけてください。バックアップがインストール対象よりも新しいデータベースバージョンで作成された場合、問題が発生する可能性があります。
インストーラーが実行されているサーバーのバージョン番号が、ビルドされたサーバーのバージョン番号と同じかそれ以上であることを確認するのが最善です。メジャーバージョンとマイナーバージョンが同じか近い場合(例: [5.7 から 5.6])、移行は問題なく機能するはずです。[5.7 から 5.1] のバージョンペアは、非常にシンプルなセットアップでない限り、問題を引き起こす可能性が高くなります。バージョンが離れすぎている場合は、ホスティング プロバイダーと協力して、このサーバーの MySQL エンジンをアップグレードしてください。
ソリューション 1: UTF8MB4 FORMAT
検出された現在の MySQL サーバーのバージョンが 5.5.3(2010 年 4 月 8 日リリース)未満の場合、utf8mb4 テーブルのサポートは機能しません。utf8mb4 フォーマットは MySQL サーバー 5.5.3 以降でのみサポートされています。WordPress の最近のリリースとの互換性を高め、インストールのエラーを防ぐために、このサーバーの MySQL サーバーのバージョンをアップグレードすることを強くお勧めします。
ソリューション 2: UTF8 INPUTS
データベース接続文字列の一部として ASCII 以外の文字が検出され、MySQL サーバーが正しく構成されていない場合、接続できません。この問題は、MySQL my.ini 構成を更新することで解決できます。
[mysqld] の下に character_set_server=utf8 設定を追加し、データベース サーバーを再起動してください。この値はコメント解除するだけでよい場合があります。
ソリューション 3: MARIA-DB SETUPS
バージョン 10.N.N が表示される場合、データベースのディストリビューションは MariaDB の MySQL のフレーバーです。ディストリビューションは非常に近いですが、微妙な違いがいくつかあります。一部のオペレーティング システムは、「5.5.5-10.1.21-MariaDB」のように両方の関連性を示すバージョンを報告します。詳細については、オンラインの MariaDB 対 MySQL – 互換性のページをご覧ください。
一部のメッセージは単なる通知です。インストールプロセスを続行し、インストーラーログ.txtファイルと、インストーラーのステップ3にあるインストールレポートを注意深く監視することを強くお勧めします。これらの場所にある通知/警告/エラーを確認して、インストールプロセスでエラーが検出されなかったことを確認してください。問題が見つかった場合は、FAQページにアクセスし、「インストールレポートでデータベースエラーまたは一般的な警告を解決するにはどうすればよいですか?」という質問を参照してください。
解決策4:テーブルの作成
MySQLとMariaDBでのテーブルの作成は非常に似ていますが、いくつかの小さな違いがあり、それが(一般的ではありませんが)問題を引き起こす可能性があります。それぞれの違いを確認するには、ここにある2つのドキュメントセットを参照してください。
ご覧のとおり、これらは完全に一致するわけではありません(MariaDBにはMySQLにはないオプションがあります)。そのため、MariaDBで機能したCREATEクエリを実行しようとしたときに、MySQLがサポートしていないテーブルオプションが含まれていると、失敗する可能性があります。現在の修正方法は、ファイルを手動で検索および置換して、DBダンプから問題のあるテーブルオプションを削除することです。
テーブルの照合順序の問題
互換性モードと「不明な照合順序」エラーを解決するには?
この問題を解決するには4つの方法があります。オプション1は、この問題を解決するための最も迅速、最も簡単、かつ最も安全な方法です。
不明な照合順序の概要
「不明な照合順序」エラーは、インストールされているMySQLサーバー(ターゲットサーバー)が、バックアップを作成したMySQLエンジンよりも古いことを意味します。次のようなエラーメッセージ:
エラーデータベースエラー書き込み「不明な照合順序:'utf8mb4_unicode_ci'」
使用されているMySQLバージョンがこのテーブル形式をサポートしていないため、トリガーされます。インストーラーの「接続テスト」ボタンをクリックするか、インストーラーログ.txtファイルを表示することで、MySQLサーバーバージョンの比較を表示できます。出力は次のようになります:
MYSQLバージョン:このサーバー:5.4.22 —ビルドサーバー:5.7.10
オプション1 –データベースソフトウェアの更新
「不明な照合順序」問題を修正するための最もクリーンで安全な方法は、ターゲットMySQLサーバーを、バックアップが構築されたバージョンと同じかそれ以降のバージョンに更新することです。最も一般的な形式エラーには以下が含まれます:
- utf8mb4_unicode_ci:MySQLサーバー5.5.3以降が必要です。
- utf8mb4_unicode_520_ci:MySQLサーバー5.6以降が必要です。
最善の解決策:この問題を解決するための最も簡単で最善の方法は、ホストにアカウントを、必要な照合順序タイプをサポートするMySQLサーバーに移動するように依頼することです(上記の例を参照)。単に表示されているエラーメッセージを伝えるだけで、彼らはあなたを正しいサーバーに移動するのを手伝ってくれます。
ほとんどのホストは、現在サイトがオンになっているサーバーをアップグレードしません。ただし、アカウントを新しいサーバーに簡単に移動できるはずです。これは非常に一般的な慣行であり、優れたホストであればかなり簡単に対応できるはずです。
5.5.3より前のバージョンを実行している場合、それは非常に古いMySQLサーバーのバージョンを使用していることになります。5.5.3は2010年にリリースされたため、現在使用しているMySQLサーバーのバージョンはそれよりもさらに古いことになります。セキュリティとパフォーマンスの向上、およびWordPressコアのアップデートへの準拠のために、最新のソフトウェアを使用するようホストと協力することを強く推奨します。ずさんなホストが古いソフトウェアをあなたのサイトで使用することを許さないでください。
オプション2 – デフォルトの文字セットと照合順序
インストーラーのステップ2のオプションにあった「レガシー」チェックボックスはなくなりました。しかし、現在は自動的に検出および設定されます。文字セットと照合順序が明示的に定義されていない場合、デフォルトの文字セットと照合順序が使用されるという通知が表示されます。
データベーステーブルを作成する際、使用中のMySQLのバージョンが、テーブルが作成されたMySQLのバージョンの照合順序タイプをサポートしていない場合があります。このシナリオでは、インストーラーはテーブルを作成するために自動的にフォールバック照合順序タイプを試みます。
オプション3 – 互換モードの実行
Mysqldump互換モードは、他のデータベースシステムまたは古いMySQLサーバーとの互換性が高いデータベースSQLスクリプト出力を生成するのに役立ちます。
Duplicatorはいくつかの互換モードをサポートしていますが、これらはすべてプラグインでmysqldumpモードが有効になっている場合にのみ利用可能です。互換モードは、mysqldumpオプションを使用してバックアップを作成する際に有効にできます。
Duplicatorは、作成プロセス中にのみ互換モードを許可します。テンプレートの作成時やスケジュールでは許可されません。この設定の理由は、これらの設定の使用を思いとどまらせ、実際の根本的な問題(データベースサーバーの更新)を解決することです。
データベースのアップグレード: 互換モードは最後の手段としてのみ使用してください。データベースの問題を解決するための推奨されるアプローチは、両方のデータベースサーバーが最新であり、バージョン番号が非常に近いことを確認することです(オプション1を参照)。たとえば、バックアップを作成したデータベースサーバーが5.7.5の場合、バックアップをインストールするデータベースサーバーは少なくとも5.7.Nの範囲内である必要があります。可能であれば、ホストまたはサーバー管理者にMySQLサーバーを新しいバージョンにアップグレードするように依頼してください。ホストが最近のアップグレードにアップグレードしない場合は、可能な限り高いバージョンにアップグレードするように依頼してください。
データの保持: インターネット上には、現在のSQLファイルを変更する方法やmysqldump互換モードを使用する方法を説明したいくつかの回避策(オプション4)がありますが、主な根本的な問題は、データを1つの形式で保存し、それを変換しようとしていることです。これらの手法は、後でデータ損失や互換性の問題につながる可能性があります。正しいアプローチは、MySQLソフトウェアをアップグレードすることです。
両方のモードを試してみてください:
- Duplicatorは現在、MysqldumpとPHPモードの2つの異なるモードをサポートしています(設定 » バックアップオプションを参照)。
- 文字化けの問題が発生し、他に選択肢がない場合は、データベースを両方のモードでビルドして、どちらかが問題を解決するかどうかを確認することを検討してください。
オプション4 – 手動設定
これらのオプションは上級ユーザー向けであり、注意して実行する必要があります。このオプションでは、database.sql スクリプトの更新またはソースデータベーステーブルの照合順序タイプの更新が必要です。以下に 3 つのアプローチを示します。問題に対処するには、いずれか 1 つのオプションが必要です。
database.sql を更新する
「不明な照合順序」の問題については、次の手順を試すことができます。
- アーカイブ zip ファイルを手動で抽出します。
- notepadでdatabase.sqlファイルを開き、照合順序を検索および置換します。たとえば、次のようなことができます。
- 「utf8mb4」を「utf8」に置換
- 「utf8_unicode_520_ci」を「utf8_general_ci」に置換
これらのオプションは、必ず最初にサンドボックスで試し、結果に満足するまで本番サイトでは絶対に使用しないでください。
次に、サーバー上の installer.php ファイルを参照し、「詳細設定」を選択して「手動抽出」にチェックを入れます。
これは、他の照合順序でも試すことができます (つまり、「collation_type_1」を「collation_type_2」に置き換えます)。
ソースデータベースをコードで更新する
このオプションでは、システムを本当に理解しており、事前にバックアップを作成している必要があります。このスクリプトを使用すると、ビルドサーバーの照合順序を変更して、ターゲットサーバーでサポートできるようにすることができます。完全なスクリプトは、Stack Overflow の次の場所で確認できます: http://stackoverflow.com/a/29939906/2808424
ソース データベースを IDE で更新
上記のコードを実行することに不安がある場合は、IDE または GUI ツールを使用して、SQL ステートメントまたはインターフェイスを通じてテーブルの照合順序を手動で変更することもできます。ここでも、これらのオプションではシステムを本当に理解しており、事前にバックアップを作成している必要があります。
以下に、phpMyAdmin などの IDE を使用して照合順序を更新するための、わかりやすいステップバイステップの手順を示します。