Nemusíte se starat o zprávu nvarchar, kterou vygeneroval phpmyadmin, nikoli MySQL. MySQL umožňuje datový typ nvarchar, viz manuál MySQL o národních datech znaková sada :
Standardní SQL definuje NCHAR nebo NATIONAL CHAR jako způsob, jak označit, že sloupec CHAR by měl používat nějakou předdefinovanou znakovou sadu. MySQL používá jako tuto předdefinovanou znakovou sadu sutf8. Například tyto deklarace datových typů jsou ekvivalentní:
CHAR(10), CHARACTER SET utf8 NÁRODNÍ CHARACTER(10), NCHAR(10)
Stejně jako tyto:
VARCHAR(10), CHARACTER SET utf8 NATIONAL VARCHAR(10), NVARCHAR(10),NCHAR VARCHAR(10), NATIONAL CHARACTER VARYING(10), NATIONAL CHARVARYING(10)
Skutečný problém je ve spodní části chybové zprávy:velikost řádku je příliš velká. Tato chybová zpráva pochází z MySQL a je to ta, kterou potřebujete vyřešit.
mysql používá znakovou sadu utf8 pro datový typ nvarchar. Znak utf8 v mysql používá až 3 bajty. Vaše config_data
pole je definováno jako nvarchar(21844)
, proto vyžaduje až 21844*3+2=65534 bajtů.
Jak říká chybová zpráva, řádek může být dlouhý až 65535 bajtů, takže vám zbývá 1 bajt, ale ostatní pole posunou velikost řádku nad limit.
Co můžete udělat:
- Snižte
config_data
délka pole, aby se celková délka řádku vešla do limitu. - Změňte
config_data
datový typ na varchar a použijte znakovou sadu, která vyžaduje méně bajtů – jen se ujistěte, že znaková sada podporuje všechny znaky, které potřebujete. - Změňte
config_data
datový typ natext
protože pouze malá část hodnoty textového pole je ve skutečnosti uložena v samotném řádku. To je ve skutečnosti navrženo v samotné chybové zprávě.