phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Não reconhecer o tipo de dados nvarchar no banco de dados


Você não precisa se preocupar com a mensagem nvarchar, que foi gerada pelo phpmyadmin, não pelo MySQL. O MySQL permite o tipo de dados nvarchar, consulte o manual do MySQL em dados nacionais conjunto de caracteres :

O SQL padrão define NCHAR ou NATIONAL CHAR como uma forma de indicar que uma coluna CHAR deve usar algum conjunto de caracteres predefinido. MySQL usa utf8 como este conjunto de caracteres predefinido. Por exemplo, essas declarações de tipo de dados são equivalentes:

CHAR(10), CONJUNTO DE CARACTERES utf8 NACIONAL CHARACTER(10), NCHAR(10)

Como são estes:

VARCHAR(10), CONJUNTO DE CARACTERES utf8 NATIONAL VARCHAR(10), NVARCHAR(10),NCHAR VARCHAR(10), NACIONAL CHARACTER VARYING(10), NACIONAL CHARVARYING(10)

O verdadeiro problema está na parte inferior da mensagem de erro:tamanho da linha muito grande. Esta mensagem de erro vem do MySQL e é isso que você precisa resolver.

mysql usa o conjunto de caracteres utf8 para o tipo de dados nvarchar. Um caractere utf8 no mysql usa até 3 bytes. Seu config_data campo é definido como nvarchar(21844) , portanto, requer até 21844*3+2=65534 bytes.

Como a mensagem de erro diz, uma linha pode ter até 65535 bytes, então você tem 1 byte restante, mas os outros campos empurram o tamanho da linha acima do limite.

O que você pode fazer:
  1. Reduzir config_data comprimento do campo para que o comprimento total da linha caiba no limite.
  2. Alterar config_data tipo de dados para varchar e use um conjunto de caracteres que exija menos bytes - apenas certifique-se de que o conjunto de caracteres suporte todos os caracteres que você precisa.
  3. Alterar config_data tipo de dados para text porque apenas uma pequena parte do valor de um campo de texto é realmente armazenada na própria linha. Na verdade, isso é sugerido na própria mensagem de erro.