Sto lavorando con un progetto OS che utilizza South per migrare il database. Sto costruendo un nuovo database da zero e voglio assicurarmi che South sia configurato in modo da poter facilmente aggiornare il database in futuro.Come posso creare un nuovo database per un'applicazione esistente usando Django South e impostare valori predefiniti?
sembra che questo processo dovrebbe essere:
- creare il db
- syncdb
- migrano
Tuttavia, quando si tenta di eseguire la migrazione dei database, una delle migrazioni precedente (la migrazione 0004 e vanno a 0009) genera un'eccezione:
ValueError: You cannot add a null=False column without a default value.
Non capisco come aggiungere un valore predefinito alla migrazione 0004, quindi questa eccezione non viene generata.
Non è necessario eseguire le migrazioni perché il database è vuoto.
Tuttavia, sud_migrationhistory deve contenere un elenco di tutte le migrazioni e quando sono state applicate.
Ho provato a modificarlo e aggiungere manualmente la migrazione 0009 al database, ma questo ha generato un altro errore perché le migrazioni intermedie non erano state eseguite. Ho anche provato ad aggiungere un campo al database per vedere se potessi capire che la sintassi di add_column sarebbe simile a un valore predefinito di 0 fornito. Il formato sembra completamente diverso da queste migrazioni precedenti.
Qui ci sono le 2 diverse versioni di sintassi add_column:
#0004 syntax:
db.add_column('experiments_dailyreport', 'test_group_size', orm['experiments.dailyreport:test_group_size'])
#0009 syntax:
syntax db.add_column('experiments_dailyreport', 'test_group_size', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
Quindi, sto cercando di indovinare c'è stato un cambiamento nel codice del Sud tra cui 0004 è stato creato e di oggi.
C'è un modo per creare il database con syncdb e quindi aggiornare in qualche modo south_migrationhistory senza eseguire manage.py migrare?
Se si dispone di un'app esistente con migrazioni Sud, come si dovrebbe creare un nuovo database da zero?
Non riesco a migrare perché non esiste un valore predefinito impostato su un campo intero. Come si imposta un valore predefinito in una migrazione precedente? Il campo non esiste nemmeno più.
sintassi tentato:
db.add_column('experiments_dailyreport', 'test_group_size', orm['experiments.dailyreport:test_group_size'], {'default': 0})
#throws ValueError: You cannot add a null=False column without a default value.
db.add_column('experiments_dailyreport', 'test_group_size', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
#throws AttributeError: Migration instance has no attribute 'gf'
sto usando sud-0.7.2-py2.7.uovo