U hoeft zich geen zorgen te maken over het nvarchar-bericht, dat is gegenereerd door phpmyadmin, niet door MySQL. MySQL staat nvarchar-gegevenstype toe, zie MySQL-handleiding op nationale gegevens tekenset :
Standaard SQL definieert NCHAR of NATIONAL CHAR als een manier om aan te geven dat een CHAR-kolom een vooraf gedefinieerde tekenset moet gebruiken. MySQL gebruiktutf8 als deze vooraf gedefinieerde tekenset. Deze gegevenstypeverklaringen zijn bijvoorbeeld equivalent:
CHAR (10), TEKENSET utf8 NATIONAAL KARAKTER (10), NCHAR (10)
Zoals deze:
VARCHAR (10), KARAKTER SET utf8 NATIONAAL VARCHAR (10), NVARCHAR (10), NCHAR VARCHAR (10), NATIONAAL KARAKTER VARIANT (10), NATIONAAL CHARVARYING (10)
Het echte probleem staat onderaan de foutmelding:rijgrootte te groot. Deze foutmelding komt van MySQL en die moet je oplossen.
mysql gebruikt utf8-tekenset voor het gegevenstype nvarchar. Een utf8-teken in mysql gebruikt maximaal 3 bytes. Uw config_data
veld is gedefinieerd als nvarchar(21844)
, daarom vereist het tot 21844*3+2=65534 bytes.
Zoals de foutmelding zegt, kan een rij tot 65535 bytes lang zijn, dus je hebt nog 1 byte over, maar de andere velden duwen de rijgrootte boven de limiet.
Wat u kunt doen:
- Verminder
config_data
veldlengte zodat de totale rijlengte binnen de limiet past. - Wijzig
config_data
datatype naar varchar en gebruik een tekenset die minder bytes nodig heeft - zorg er wel voor dat die tekenset alle tekens ondersteunt die je nodig hebt. - Wijzig
config_data
gegevenstype naartext
omdat slechts een klein deel van de waarde van een tekstveld daadwerkelijk in de rij zelf wordt opgeslagen. Dit wordt eigenlijk gesuggereerd in de foutmelding zelf.