首頁 >資料庫 >mysql教程 >在 Django 和 MySQL 中儲存 Unicode 時如何修復「字串值不正確」錯誤?

在 Django 和 MySQL 中儲存 Unicode 時如何修復「字串值不正確」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-24 00:51:10511瀏覽

How to Fix

使用Django 在MySQL 中儲存Unicode 字元時出現錯誤字串值錯誤

當嘗試將unicode 字串儲存到Django 中的auth_user模型時,您可能會遇到以下錯誤message:

Incorrect string value: '\xC4\x8Dius' for column 'last_name' at row 104

潛在原因

此錯誤通常由以下原因引起:

  • 字元集限制: MySQL 對UTF-8 有 3位元組限制
  • 資料庫和表格設定:資料庫、表格和欄位必須使用 utf8mb4 字元集,支援 4 位元組 unicode 字元。

解決方案

要解決此問題,請按照以下步驟操作步驟:

    CREATE DATABASE db_name CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
    ALTER TABLE auth_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  1. 變更資料庫、表格和欄位以使用utf8mb4字元集:
  2. 執行下列查詢以建立具有 utf8mb4 字元的新資料庫set:

    DATABASES = {
        'default': {
            'ENGINE':'django.db.backends.mysql',
            ...
            'OPTIONS': {'charset': 'utf8mb4'},
        }
    }
  3. 使用 ALTER TABLELE語句修改現有的表格和欄位:

  • 指定Django中的字元集設定:
  • 在Django設定文件(settings.py)中,加入以下行:
其他注意事項 如果您現有的CharField 欄位的最大長度為255 及其索引,您需要將最大長度減少到191 以避免「指定的鍵太長」錯誤。 或者,您可以編輯 MySQL 配置以刪除字元長度限制。但是,這需要對 Django 進行額外修改。 如果可能,請考慮切換到 PostgreSQL,因為它支援 UTF-8 中最多 4 位元組的 unicode 字符,而沒有這些限制。

以上是在 Django 和 MySQL 中儲存 Unicode 時如何修復「字串值不正確」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn