MySQLではなくphpmyadminによって生成されたnvarcharメッセージについて心配する必要はありません。 MySQLはnvarcharデータ型を許可します。
標準SQLは、CHAR列が事前定義された文字セットを使用する必要があることを示す方法としてNCHARまたはNATIONALCHARを定義しています。 MySQLは、この事前定義された文字セットとしてutf8を使用します。たとえば、これらのデータ型宣言は同等です:
CHAR(10)、文字セットutf8 NATIONAL CHARACTER(10)、NCHAR(10)
これらは次のとおりです:
VARCHAR(10)、CHARACTER SET utf8 NATIONAL VARCHAR(10)、NVARCHAR(10)、NCHAR VARCHAR(10)、NATIONAL CHARACTER VARYING(10)、NATIONAL CHARVARYING(10)
実際の問題は、エラーメッセージの下部にあります。行サイズが大きすぎます。このエラーメッセージはMySQLからのものであり、それを解決する必要があります。
mysqlは、nvarcharデータ型にutf8文字セットを使用します。 mysqlのutf8文字は最大3バイトを使用します。 config_data
フィールドはnvarchar(21844)
として定義されます したがって、最大21844 * 3 + 2=65534バイトが必要です。
エラーメッセージに示されているように、行の長さは最大65535バイトであるため、残りは1バイトですが、他のフィールドは行サイズを制限を超えています。
できること:
-
config_data
を減らします 行全体の長さが制限に収まるようにフィールドの長さ。 -
config_data
を変更します データ型をvarcharに設定し、必要なバイト数が少ない文字セットを使用します。文字セットが必要なすべての文字をサポートしていることを確認してください。 -
config_data
を変更しますtext
へのデータ型 テキストフィールドの値のごく一部だけが実際に行自体に格納されるためです。これは実際にはエラーメッセージ自体で示唆されています。