Ralat Django SQLite: "Nilai Rentetan Salah" Semasa Menyimpan Rentetan Unikod
Menghadapi ralat "Nilai Rentetan Tidak Tepat" semasa menyimpan rentetan Unikod dalam Model auth_user Django boleh mengecewakan. Ralat ini biasanya menunjukkan isu dengan pengekodan aksara atau panjang bait maksimum yang dibenarkan untuk rentetan.
Punca:
Punca ralat ini ialah MySQL mempunyai had 3-bait pada aksara Unicode menggunakan set aksara utf-8. Ini bermakna aksara yang memerlukan lebih daripada 3 bait, seperti yang mempunyai diakritik atau simbol khas, tidak boleh disimpan dalam jadual MySQL menggunakan set aksara utf-8.
Penyelesaian:
Untuk menyelesaikan isu ini, anda perlu melakukan perkara berikut langkah:
DATABASES = { 'default': { # ... other settings ... 'OPTIONS': {'charset': 'utf8mb4'}, } }
Varian PostgreSQL:
Jika anda menggunakan PostgreSQL sebagai backend pangkalan data anda, anda mungkin tidak menghadapi masalah ini, kerana PostgreSQL menyokong aksara Unicode dengan panjang maksimum 4 bait.
Kesimpulan:
Dengan menaik taraf kepada MySQL 5.5 atau lebih baru dan menggunakan set aksara utf8mb4, anda boleh menyelesaikan ralat "Nilai Rentetan Salah" semasa menyimpan rentetan Unicode dalam Django. Ingat untuk mengubah suai tetapan Django anda dan laraskan skema pangkalan data dan panjang medan anda seperti yang diperlukan.
Atas ialah kandungan terperinci Mengapa Django Melemparkan Ralat \'Nilai Rentetan Salah\' Semasa Menyimpan Rentetan Unikod ke SQLite?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!