私は自分のウェブサイトのデータベースを他のサーバーにインポートしていましたが、それはこのエラーを示しています。
データベースを複数回インポートしようとしましたが失敗しました。データベースファイルをエクスポートするときに来る「Add Drop Table」フィールドもチェックしましたが、何もしませんでした。
この問題は、サーバがutf8mb4_unicode_520_ci
照合タイプをサポートしていないために発生しています。
これを解決するには、すべてのテーブルの照合順序をutf8mb4_unicode_520_ci
からutf8_general_ci
に変換する必要があります。
phpmyadminでエクスポートしている場合は、次のことができます。
データベースの[エクスポート]タブをクリックします
[カスタム]ラジオボタンをクリックします
「形式固有のオプション」というタイトルのセクションに移動し、「データベースシステムまたは以前のMySQLサーバーとの互換性を最大にする」のドロップダウンをNONEからMYSQL40に変更します。
一番下までスクロールして[GO]をクリックします。
OR影響を受ける各テーブルで次のクエリを実行します。
ALTER TABLE myTable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
更新: あなたはsqlでエクスポートされたファイルTYPE=MyISAM
をENGINE=MyISAM
にも置き換えるべきです
一部の人にとっては、照合utf8mb4_unicode_520_ci
は奇妙に見えますが、WordPressは可能であればこの照合を使用します。他の照合順序が2番目に優れています。
この行に注意してください。
// _unicode_520_はより優れた照合です。利用可能な場合はそれを使用する必要があります。
いくつかのプラグインはutf8mb4_unicode_520_ci
照合テーブルを何に関係なく作成します。
File: /var/www/html/test100.com/wp-includes/wp-db.php
761: /**
762: * Determines the best charset and collation to use given a charset and collation.
763: *
764: * For example, when able, utf8mb4 should be used instead of utf8.
765: *
766: * @since 4.6.0
767: * @access public
768: *
769: * @param string $charset The character set to check.
770: * @param string $collate The collation to check.
771: * @return array The most appropriate character set and collation to use.
772: */
773: public function determine_charset( $charset, $collate ) {
774: if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) ) || empty( $this->dbh ) ) {
775: return compact( 'charset', 'collate' );
776: }
777:
778: if ( 'utf8' === $charset && $this->has_cap( 'utf8mb4' ) ) {
779: $charset = 'utf8mb4';
780: }
781:
782: if ( 'utf8mb4' === $charset && ! $this->has_cap( 'utf8mb4' ) ) {
783: $charset = 'utf8';
784: $collate = str_replace( 'utf8mb4_', 'utf8_', $collate );
785: }
786:
787: if ( 'utf8mb4' === $charset ) {
788: // _general_ is outdated, so we can upgrade it to _unicode_, instead.
789: if ( ! $collate || 'utf8_general_ci' === $collate ) {
790: $collate = 'utf8mb4_unicode_ci';
791: } else {
792: $collate = str_replace( 'utf8_', 'utf8mb4_', $collate );
793: }
794: }
795:
796: // _unicode_520_ is a better collation, we should use that when it's available.
797: if ( $this->has_cap( 'utf8mb4_520' ) && 'utf8mb4_unicode_ci' === $collate ) {
798: $collate = 'utf8mb4_unicode_520_ci';
799: }
800:
801: return compact( 'charset', 'collate' );
802: }
utf8mb4_unicode_520_ci
(Unicode Collation Algorithm 5.2.0、2010年10月)照合は、utf8mb4_unicode_ci
(UCA 4.0.0、2003年11月)を改良したものです。
MySQLが今後のUCAをサポートする時期についての見解はありません。
最新のUCAは9.0.0です http://www.unicode.org/reports/tr10/しかしMySQLはそれをサポートしていません。