Ralat Nilai Rentetan Tidak Betul semasa Menyimpan Rentetan Unikod dalam Django
Apabila cuba menyimpan rentetan unikod ke model auth_user Django, anda mungkin menghadapi " ralat nilai rentetan yang salah. Ralat ini biasanya disebabkan oleh set aksara MySQL dan tetapan penyusunan.
Set dan Pengumpulan Aksara MySQL
MySQL menyokong set aksara UTF-8, tetapi ia mempunyai Had 3-bait pada aksara. Ini bermakna tidak mungkin untuk menyimpan aksara unicode 4-bait dalam MySQL dengan set aksara UTF-8 standard.
Penjelasan Masalah
Apabila Django cuba menyimpan rentetan unicode kepada model auth_user, MySQL cuba menukarnya kepada set aksara UTF-8. Walau bagaimanapun, jika rentetan mengandungi aksara 4-bait, penukaran gagal dan mengakibatkan ralat "nilai rentetan yang salah".
Penyelesaian
Untuk menyelesaikan isu ini, anda boleh:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', ... 'OPTIONS': {'charset': 'utf8mb4'}, } }
Tambahan Pertimbangan
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Nilai Rentetan Salah\' Semasa Menyimpan Rentetan Unikod dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!