sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

No reconocer el tipo de datos nvarchar en la base de datos

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:

  1. Reducir config_data longitud del campo para que la longitud total de la fila se ajuste al límite.
  2. 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.
  3. Cambiar config_data tipo de datos a text 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.