sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

Känner inte igen datatypen nvarchar i databasen

Du behöver inte oroa dig för nvarchar-meddelandet, som genererades av phpmyadmin, inte av MySQL. MySQL tillåter nvarchar-datatyp, se MySQL-manualen om nationell data teckenuppsättning :

Standard SQL definierar NCHAR eller NATIONAL CHAR som ett sätt att indikera att en CHAR-kolumn ska använda någon fördefinierad teckenuppsättning. MySQL använder utf8 som denna fördefinierade teckenuppsättning. Till exempel är dessa datatypdeklarationer likvärdiga:

CHAR(10), CHARACTER SET utf8 NATIONELL CHARACTER(10), NCHAR(10)

Som är dessa:

VARCHAR(10), CHARACTER SET utf8 NATIONAL VARCHAR(10), NVARCHAR(10),NCHAR VARCHAR(10), NATIONELL KARAKTÄR VARIERANDE(10), NATIONAL CHARVARYING(10)

Det verkliga problemet är längst ner i felmeddelandet:radstorleken är för stor. Det här felmeddelandet kommer från MySQL och det är det du behöver lösa.

mysql använder utf8 teckenuppsättning för nvarchar datatyp. Ett utf8-tecken i mysql använder upp till 3 byte. Dina config_data fältet definieras som nvarchar(21844) , därför kräver den upp till 21844*3+2=65534 byte.

Som felmeddelandet säger kan en rad vara upp till 65535 byte lång, så du har 1 byte kvar, men de andra fälten skjuter upp radstorleken över gränsen.

Vad du kan göra:

  1. Minska config_data fältets längd så att den totala radlängden passar in i gränsen.
  2. Ändra config_data datatyp till varchar och använd en teckenuppsättning som kräver mindre byte - se bara till att teckenuppsättningen stöder alla tecken du behöver.
  3. Ändra config_data datatyp till text eftersom endast en liten del av ett textfälts värde faktiskt lagras i själva raden. Detta föreslås faktiskt i själva felmeddelandet.



  1. Importera CSV-fil till MySQL med phpMyAdmin

  2. Hur man uppdaterar en kolumn i mySQL-databas med Excel

  3. Hur man ansluter till SQL Server CE-fil med SSMS

  4. MySQL Update Statement:Okänd "tabell" i "fältlista"