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:
- Reduzir
config_data
comprimento do campo para que o comprimento total da linha caiba no limite. - 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. - Alterar
config_data
tipo de dados paratext
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.