2012-01-27 16 views
24

Ho un sito Web Django che esegue un mini CMS che abbiamo costruito internamente anni fa, sta utilizzando postgresql. Quando si salva un titolo semplice e un paragrafo di testo ricevo il seguente errore:DatabaseError: valore troppo lungo per il tipo di carattere che varia (100)

value too long for type character varying(100) 

La cosa strana è, non una sola colonna è variabile (100) sono tutti 200 o 250, anche quelli Django di default hanno stato modificato da 100 a 200 a causa di un re-opened ticket mentioned here

Qualcuno sa di una soluzione a questo problema?

risposta

37

Posso scommettere che hai uno SlugField senza lunghezza predefinita? Impostarlo su 255 e migrare

+0

Hai capito. Non pensavo che questo fosse il problema perché di default Django li memorizzava come variabile (50) ma una delle dipendenze nel progetto aveva un modello che variava (100) per i campi di slug; L'ho trascurato. – JeffC

+2

@michael che è stato impressionante. Ero abbastanza bloccato. – harristrader

+0

Quindi, come slug = models.SlugField (max_length = 255), e quindi eseguire la migrazione su heroku? –

13

Questo è un messaggio di errore di Postgres e non di Django.

Sembra che tu abbia modificato la lunghezza del campo nello models.py, ma ciò non modifica la lunghezza del database che è stata creata quando hai fatto un manage.py syncdb.

È necessario modificare direttamente la lunghezza del campo nel database.

+2

Non li ho modificati solo nei modelli. Ho eseguito il sud come facciamo normalmente quando abbiamo cambiato le proprietà del DB e da allora abbiamo migrato, abbiamo controllato due volte tutte le tabelle manualmente in postgres e non ci sono residui di 100 in qualsiasi luogo. Sono confuso. – JeffC

0

mi rendo conto la domanda è già una risposta, ma per gli altri che vengono qui quando si cerca il messaggio di errore:

Nel mio caso il problema era che il mio nome della tabella ha superato i 50 caratteri. Apparentemente questo non è permesso. La modifica del nome della tabella ha risolto il problema.

Per saperne di più qui: https://code.djangoproject.com/ticket/18959

0

Ho avuto un problema simile con django-autoslugfield Io sto usando un pacchetto simile e poi commutato Django-autoslugfield

stavo ottenendo questo errore: value too long for type character varying(50)

nonostante il fatto che il mio models.py aveva:

slug = AutoSlugField(max_length=255, populate_from='name', unique=True)

e nel mio db il che il tipo era character varying 255

volta rimuovo max_length=255 dal campo cioè

slug = AutoSlugField(populate_from='name', unique=True)

allora ha funzionato benissimo risposta

0

s' Michael Samoylov mi ha segnalato in la giusta direzione. Ho avuto lo stesso errore, tranne che era con un FileField.

I campi hanno una lunghezza massima, anche se non è stata impostata una lunghezza massima. Aumentare il valore in modo che i dati si adattino per evitare l'errore.

Nel mio caso, i dati erano troppo grandi per essere archiviati ragionevolmente nel database. Ho fatto ricorso al salvataggio del mio file su disco, quindi salvando il percorso del file nel database.

Problemi correlati