No tiene que preocuparse por el mensaje nvarchar, que fue generado por phpmyadmin, no por MySQL. MySQL permite el tipo de datos nvarchar, consulte el manual de MySQL en datos nacionales conjunto de caracteres :
SQL estándar define NCHAR o NATIONAL CHAR como una forma de indicar que una columna CHAR debe usar algún juego de caracteres predefinido. MySQL usa utf8 como este juego de caracteres predefinido. Por ejemplo, estas declaraciones de tipos de datos son equivalentes:
CARÁCTER(10), CONJUNTO DE CARACTERES utf8 CARÁCTER NACIONAL(10), NCHAR(10)
Como son estos:
VARCHAR(10), CONJUNTO DE CARACTERES utf8 VARCHAR NACIONAL(10), NVARCHAR(10),NCHAR VARCHAR(10), VARIACIÓN DE CARÁCTER NACIONAL(10), CARÁCTER NACIONAL(10)
El verdadero problema está en la parte inferior del mensaje de error:el tamaño de la fila es demasiado grande. Este mensaje de error proviene de MySQL y ese es el que debes resolver.
mysql usa el conjunto de caracteres utf8 para el tipo de datos nvarchar. Un carácter utf8 en mysql usa hasta 3 bytes. Tus config_data
el campo se define como nvarchar(21844)
, por lo tanto requiere hasta 21844*3+2=65534 bytes.
Como dice el mensaje de error, una fila puede tener una longitud de hasta 65535 bytes, por lo que le queda 1 byte, pero los otros campos empujan el tamaño de la fila por encima del límite.
Qué puedes hacer:
- Reducir
config_data
longitud del campo para que la longitud total de la fila se ajuste al límite. - Cambiar
config_data
tipo de datos a varchar y use un conjunto de caracteres que requiera menos bytes; solo asegúrese de que el conjunto de caracteres admita todos los caracteres que necesita. - Cambiar
config_data
tipo de datos atext
porque solo una pequeña parte del valor de un campo de texto se almacena en la fila misma. En realidad, esto se sugiere en el propio mensaje de error.