Maison > base de données > tutoriel mysql > le corps du texte

Comment corriger les erreurs « Valeur de chaîne incorrecte » lors de l'enregistrement d'Unicode dans Django et MySQL ?

Susan Sarandon
Libérer: 2024-11-24 00:51:10
original
431 Les gens l'ont consulté

How to Fix

Erreur de valeur de chaîne incorrecte lors de l'enregistrement de caractères Unicode dans MySQL avec Django

Lorsque vous essayez d'enregistrer des chaînes Unicode dans le modèle auth_user dans Django, vous peut rencontrer le message d'erreur suivant :

Incorrect string value: '\xC4\x8Dius' for column 'last_name' at row 104
Copier après la connexion

Potentiel Causes

Cette erreur est généralement provoquée par les éléments suivants :

  • Limites du jeu de caractères : MySQL a une limite de 3 octets pour les caractères UTF-8 .
  • Paramètres de la base de données et de la table : La base de données, la table et les colonnes doivent utiliser le Jeu de caractères utf8mb4 pour prendre en charge les caractères Unicode de 4 octets.

Solution

Pour résoudre ce problème, suivez ces étapes :

  1. Modifiez la base de données, la table et les colonnes pour utiliser le caractère utf8mb4 set :

    • Exécutez la requête suivante pour créer une nouvelle base de données avec le jeu de caractères utf8mb4 :
    CREATE DATABASE db_name CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
    Copier après la connexion
    • Utilisez l'instruction ALTER TABLE pour modifier les tableaux existants et colonnes :
    ALTER TABLE auth_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    Copier après la connexion
  2. Spécifiez le jeu de caractères dans les paramètres de Django :

    Dans le fichier de paramètres de Django (settings.py) , ajoutez la ligne suivante :

    DATABASES = {
        'default': {
            'ENGINE':'django.db.backends.mysql',
            ...
            'OPTIONS': {'charset': 'utf8mb4'},
        }
    }
    Copier après la connexion

Supplémentaire Considérations

  • Si vous avez des colonnes CharField existantes avec une longueur maximale de 255 et un index dessus, vous devrez réduire la longueur maximale à 191 pour éviter le message "La clé spécifiée était trop longue " erreur.
  • Vous pouvez également modifier votre configuration MySQL pour supprimer la restriction de longueur de caractères. Cependant, cela nécessite des modifications supplémentaires de Django.
  • Si possible, envisagez de passer à PostgreSQL car il prend en charge jusqu'à 4 octets de caractères Unicode en UTF-8 sans ces restrictions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal