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 :
- Réduire
config_data
la longueur du champ afin que la longueur totale de la ligne respecte la limite. - 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. - Modifier
config_data
type de données entext
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.