Nie musisz się martwić wiadomością nvarchar, która została wygenerowana przez phpmyadmin, a nie przez MySQL. MySQL zezwala na typ danych nvarchar, zobacz podręcznik MySQL na temat dane krajowe zestaw znaków :
Standardowy SQL definiuje NCHAR lub NATIONAL CHAR jako sposób wskazania, że kolumna CHAR powinna używać jakiegoś predefiniowanego zestawu znaków. MySQL używa utf8 jako tego predefiniowanego zestawu znaków. Na przykład te deklaracje typów danych są równoważne:
CHAR(10), ZESTAW ZNAKÓW utf8 ZNAK NARODOWY(10), NCHAR(10)
Oto one:
VARCHAR(10), ZESTAW ZNAKÓW utf8 NATIONAL VARCHAR(10), NVARCHAR(10),NCHAR VARCHAR(10), NATIONAL CHARACTER VARYING(10), NATIONAL CHARVARYING(10)
Prawdziwy problem znajduje się na dole komunikatu o błędzie:zbyt duży rozmiar wiersza. Ten komunikat o błędzie pochodzi z MySQL i to jest ten, który musisz rozwiązać.
mysql używa zestawu znaków utf8 dla typu danych nvarchar. Znak utf8 w mysql zajmuje do 3 bajtów. Twoje config_data
pole jest zdefiniowane jako nvarchar(21844)
, dlatego wymaga do 21844*3+2=65534 bajtów.
Jak mówi komunikat o błędzie, wiersz może mieć długość do 65535 bajtów, więc pozostał Ci 1 bajt, ale inne pola zwiększają rozmiar wiersza powyżej limitu.
Co możesz zrobić:
- Zmniejsz
config_data
długość pola, aby całkowita długość wiersza mieściła się w limicie. - Zmień
config_data
wpisz dane na varchar i użyj zestawu znaków, który wymaga mniej bajtów - po prostu upewnij się, że zestaw znaków obsługuje wszystkie potrzebne znaki. - Zmień
config_data
typ danych natext
ponieważ tylko niewielka część wartości pola tekstowego jest faktycznie przechowywana w samym wierszu. W rzeczywistości jest to sugerowane w samym komunikacie o błędzie.