PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Perlengkapan Django gagal, menyatakan DatabaseError:nilai terlalu panjang untuk variasi karakter tipe (50)

Pembaruan:batas 50 karakter sekarang menjadi 255 di Django 1.8

--

Jawaban asli:

Saya baru saja bertemu sore ini juga, dan saya memiliki perbaikan (semacam)

Posting ini di sini menyiratkan itu adalah bug Django yang berkaitan dengan panjang nilai yang diizinkan untuk auth_permission. Penggalian lebih lanjut mendukung gagasan itu, seperti halnya tiket Django ini (walaupun awalnya terkait dengan MySQL).

Pada dasarnya nama izin dibuat berdasarkan verbose_name model ditambah string izin deskriptif, dan itu bisa meluap ke lebih dari 50 karakter yang diizinkan di auth.models.Permission.name.

Mengutip komentar pada tiket Django:

Awalan terpanjang untuk nilai string di kolom auth_permission.name adalah "Dapat mengubah" dan "Dapat menghapus", keduanya dengan 11 karakter. Panjang maksimum kolom adalah 50 sehingga panjang maksimum Meta.verbose_name adalah 39.

Salah satu solusinya adalah meretas kolom itu untuk mendukung> 50 karakter (idealnya melalui migrasi Selatan, saya katakan, sehingga mudah diulang) tetapi perbaikan tercepat dan paling andal yang dapat saya pikirkan hanyalah membuat definisi verbose_name ekstra panjang saya jauh lebih pendek (dari 47 karakter di verbose_name menjadi sekitar 20). Semua berfungsi dengan baik sekarang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan kunci utama peningkatan otomatis ke tabel yang ada, di PostgreSQL?

  2. Cara Membuat Pengguna dengan pgAdmin

  3. Hitung jam kerja antara 2 tanggal di PostgreSQL

  4. Pasangan nilai kunci di PostgreSQL

  5. Tabel dan indeks vs. HDD dan SSD