phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Ne pas reconnaître le type de données nvarchar dans la base de données

Vous n'avez pas à vous soucier du message nvarchar, qui a été généré par phpmyadmin, pas par MySQL. MySQL autorise le type de données nvarchar, voir le manuel MySQL sur données nationales jeu de caractères :

Le SQL standard définit NCHAR ou NATIONAL CHAR comme un moyen d'indiquer qu'une colonne CHAR doit utiliser un jeu de caractères prédéfini. MySQL utilise utf8 comme jeu de caractères prédéfini. Par exemple, ces déclarations de type de données sont équivalentes :

CHAR(10), JEU DE CARACTERE utf8 CARACTERE NATIONAL(10), NCHAR(10)

Comme ceux-ci :

VARCHAR(10), JEU DE CARACTÈRES utf8 NATIONAL VARCHAR(10), NVARCHAR(10),NCHAR VARCHAR(10), NATIONAL CHARACTER VARYING(10), NATIONAL CHARVARYING(10)

Le vrai problème se trouve au bas du message d'erreur :la taille de la ligne est trop grande. Ce message d'erreur provient de MySQL et c'est celui que vous devez résoudre.

mysql utilise le jeu de caractères utf8 pour le type de données nvarchar. Un caractère utf8 dans mysql utilise jusqu'à 3 octets. Vos config_data le champ est défini comme nvarchar(21844) , il nécessite donc jusqu'à 21844*3+2=65534 octets.

Comme l'indique le message d'erreur, une ligne peut contenir jusqu'à 65 535 octets, il vous reste donc 1 octet, mais les autres champs poussent la taille de la ligne au-dessus de la limite.

Ce que vous pouvez faire :

  1. Réduire config_data la longueur du champ afin que la longueur totale de la ligne respecte la limite.
  2. Modifier config_data type de données à varchar et utilisez un jeu de caractères qui nécessite moins d'octets - assurez-vous simplement que le jeu de caractères prend en charge tous les caractères dont vous avez besoin.
  3. Modifier config_data type de données en text car seule une petite partie de la valeur d'un champ de texte est réellement stockée dans la ligne elle-même. Ceci est en fait suggéré dans le message d'erreur lui-même.