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

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

DDD
DDDオリジナル
2024-12-15 10:54:12677ブラウズ

How to Fix

MySQL に Unicode 文字列を保存する際の不正な文字列値エラー

Django の auth_user モデルに Unicode 文字列を保存しようとすると、「不正な文字列値」 」エラーが発生する場合があります。これは、MySQL には utf-8 文字に 3 バイト制限があるのに対し、一部の Unicode 文字には 4 バイトが必要なためです。

根本原因:

エラーが発生する理由は MySQL です。バイトの関係で特定の Unicode 文字を保存できません

解決策:

この問題を解決するには:

  1. utf8mb4 文字セットを使用します: MySQL を次のようにアップグレードします。バージョン 5.5 以降の場合は、utf8mb4 文字を使用するようにデータベース、テーブル、列を変更します。 set.
  2. Django で文字セットを指定します: Django 設定ファイルに、utf8mb4 文字セットを指定する次のオプションを追加します:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}
  1. Reduce CharField Length: 「指定されたキー」が発生した場合長すぎます」という問題が解決されたため、インデックスを含む CharFields の max_length が約 33% 削減されます。たとえば、255 から 191 に変更します。

代替:

  • PostgreSQL に切り替える: PostgreSQL は 4 バイトをサポートしますUnicode 文字を含まない
  • MySQL 構成の変更: MySQL 構成を編集してバイト制限を削除しますが、これには Django の追加の変更が必要になる場合があることに注意してください。

注意することが重要です。 utf8mb4 に切り替えると、古いバージョンの MySQL や、 4バイト制限

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。