ホームページ > データベース > mysql チュートリアル > Django で Unicode 文字列を保存するときに発生する「文字列値が正しくありません」エラーを修正する方法

Django で Unicode 文字列を保存するときに発生する「文字列値が正しくありません」エラーを修正する方法

Patricia Arquette
リリース: 2024-12-02 00:38:13
オリジナル
118 人が閲覧しました

How to Fix the

Django で Unicode 文字列を保存するときに不正な文字列値エラーが発生する

Django の auth_user モデルに Unicode 文字列を保存しようとすると、「文字列値が正しくありません」エラー。このエラーは通常、MySQL の文字セットと照合順序の設定が原因で発生します。

MySQL の文字セットと照合順序

MySQL は UTF-8 文字セットをサポートしていますが、文字数は3バイト制限。これは、標準の UTF-8 文字セットを使用して MySQL に 4 バイトの Unicode 文字を保存できないことを意味します。

問題の説明

Django が保存しようとしたときUnicode 文字列を auth_user モデルに変換すると、MySQL はそれらを UTF-8 文字セットに変換しようとします。ただし、文字列に 4 バイト文字が含まれている場合、変換は失敗し、「文字列値が正しくありません」エラーが発生します。

解決策

この問題を解決するには、次の手順を実行します。 can:

  1. MySQL 文字セットを次のように変更しますutf8mb4: MySQL 5.5 以降では、4 バイト文字を許可する utf8mb4 文字セットがサポートされています。 utf8mb4 を使用してデータベース、テーブル、列を再作成します。
  2. Django 設定で文字セットを指定します: Django 設定ファイル (settings.py) に次の行を追加して、データベース接続:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}
ログイン後にコピー

追加考慮事項

  • VARCHAR フィールドのサイズを 191 文字に減らすことができない場合は、デフォルトで 4 バイトの Unicode 文字をサポートする PostgreSQL への切り替えを検討できます。
  • utf8mb4 で MySQL を使用し続けたい場合は、Django にハックを適用して、許可される VARCHAR を増やす必要がある場合があります。 size.
  • まれに、キー サイズを制限するデータベース構成によってこの問題が発生することもあります。 MySQL 構成を確認し、必要に応じて調整します。

以上がDjango で Unicode 文字列を保存するときに発生する「文字列値が正しくありません」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート