phpMyAdmin
 sql >> Baza danych >  >> Database Tools >> phpMyAdmin

Nierozpoznanie typu danych nvarchar w bazie danych

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ć:

  1. Zmniejsz config_data długość pola, aby całkowita długość wiersza mieściła się w limicie.
  2. 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.
  3. Zmień config_data typ danych na text 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.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. MySQL Error 2014 - Niezsynchronizowane polecenia - podczas próby wywołania kolejnych przechowywanych procesów

  2. Błąd zapytania Mysql tylko na niektórych serwerach

  3. podczas eksportowania danych z phpmyadmina powraca do strony zapytań sql

  4. JDBC:połączyć się ze zdalną bazą danych mySQL?

  5. jak wybrać zapytanie mysql z językiem obcym?