Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membetulkan Ralat \'Nilai Rentetan Salah\' MySQL Semasa Menyimpan Rentetan Unikod dalam Django?

Bagaimana untuk Membetulkan Ralat \'Nilai Rentetan Salah\' MySQL Semasa Menyimpan Rentetan Unikod dalam Django?

Susan Sarandon
Lepaskan: 2024-11-27 08:48:14
asal
214 orang telah melayarinya

How to Fix MySQL's

Menyelesaikan masalah MySQL "Nilai Rentetan Salah" untuk Rentetan Unikod dalam Django

Apabila cuba menyimpan rentetan unikod dalam MySQL menggunakan Django, anda mungkin menghadapi mesej ralat yang menyatakan " Nilai rentetan yang salah." Isu ini timbul disebabkan oleh pengehadan MySQL pada saiz aksara unikod dalam set aksara utf-8.

Punca Punca

Set aksara utf-8 MySQL menyokong maksimum 3 bait setiap aksara. Walau bagaimanapun, aksara unicode tertentu memerlukan 4 bait atau lebih. Apabila aksara sedemikian disimpan, MySQL menimbulkan ralat "Nilai rentetan salah".

Penyelesaian

Untuk menyelesaikan isu ini, anda perlu melaksanakan langkah berikut:

  1. Tingkatkan MySQL kepada 5.5 atau lebih baru: MySQL versi 5.5 dan ke atas menyokong aksara utf8mb4 set, yang boleh mengendalikan aksara unicode 4-bait.
  2. Tukar Pangkalan Data, Jadual dan Lajur kepada utf8mb4: Ubah suai pangkalan data MySQL anda, jadual dan lajur untuk menggunakan set aksara utf8mb4.
  3. Konfigurasikan Django untuk Menggunakan utf8mb4: Tentukan pilihan 'charset' dalam fail settings.py Django ke 'utf8mb4'.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}
Salin selepas log masuk

Pertimbangan Tambahan

  • Jika anda menghadapi ralat "Kunci yang ditentukan terlalu panjang " semasa rekreasi pangkalan data, kurangkan panjang maksimum CharFields dengan indeks dengan 33%.
  • Sebagai alternatif, edit konfigurasi MySQL anda untuk mengalih keluar sekatan panjang. Walau bagaimanapun, ini memerlukan pengubahsuaian Django tambahan.

Keserasian PostgreSQL

PostgreSQL menyokong penyimpanan aksara unicode 4-bait dalam set aksara utf8, tidak seperti MySQL. Oleh itu, anda boleh bertukar kepada PostgreSQL sebagai pilihan yang lebih sesuai untuk mengendalikan rentetan unicode dengan panjang aksara yang lebih panjang.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Nilai Rentetan Salah\' MySQL Semasa Menyimpan Rentetan Unikod dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan