Schau dir das an:
$ pypy ./manage.py syncdb
/usr/lib64/pypy-2.4.0/site-packages/django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)
(cut)
Ich habe eine schnelle Google-Suche durchgeführt , konnte aber keine Antwort finden. Was soll ich stattdessen verwenden syncdb
?
python
django
django-1.8
d33tah
quelle
quelle
syncdb has been deprecated and replaced by migrate
Antworten:
syncdb
ist aufgrund des mit django 1.7 eingeführten Migrationssystems veraltet .Jetzt können Sie Ihre Änderungen mit verfolgen
makemigrations
. Dadurch werden Ihre Modelländerungen in Python-Code umgewandelt, damit sie für andere Datenbanken bereitgestellt werden können. Wenn Sie weitere Änderungen an der Datenbank vornehmen müssen, können Sie Datenmigrationen verwenden .Nachdem Sie die Migrationen erstellt haben, müssen Sie sie anwenden :
migrate
.Also anstatt zu verwenden
syncdb
, sollten Siemakemigrations
und dann verwendenmigrate
.Workflow für die Entwicklung, nachdem Sie etwas an Ihren Modellen geändert haben:
Und auf Ihrem Produktionssystem:
Bonus: Sie müssen nicht
migrate
für jede Änderung laufen . Wenn Sie mehrere Änderungen noch nicht angewendet haben, führt django sie in der für Sie richtigen Reihenfolge aus.quelle
makemigrations
Möglicherweise ist der Modulname als Parameter erforderlich.migrate
da dies eine enorme Zeitverschwendung darstellt. @ Don Mums Antwort ist die richtige Antwort.Sie sollten auf jeden Fall das Migrationssystem verwenden . Auf diese Weise können Sie Änderungen in Ihrer
models.py
Datenbank verfolgen und Migrationen für die Datenbank erstellen. Das Migrationssystem verwendet die Befehlemakemigrations
, um Migrationen zu erstellen undmigrate
die Datenbank zu migrieren.Wenn Sie aus irgendeinem Grund eine Datenbank auf die gleiche Weise erstellen müssen,
syncdb
gibt es ein Befehlsflag, das bewirkt, dass esmigrate
auf die gleiche Weise funktioniert. Sie sollten dies nur tun, wenn Sie es WIRKLICH brauchen und wissen, was Sie tun. Zum Beispiel, um eine leere Datenbank für ein kontinuierliches Integrationssystem Ihrer Wahl zu erstellen.python manage.py migrate auth # performs migrations for auth and contenttypes contrib apps python manage.py migrate --run-syncdb # creates the rest of the database
Getestet auf Django 1.9.1.
quelle
dropdb mydb && createdb mydb && python manage.py migrate --run-syncdb
wenn ich etwas ändere.--run-syncdb
scheint nur auf Apps zu funktionieren, die keine Migrationen haben. Ich habe die folgendefind -name "migrations" -exec mv {}/__init__.py {}/__init__ \; && python manage.py migrate && python manage.py migrate --run-syncdb && find -name "migrations" -exec mv {}/__init__ {}/__init__.py \; && python manage.py migrate --fake
Sie sollten die Befehle
makemigrations
und verwendenmigrate
, die in django 1.7 eingeführt wurdenhttps://docs.djangoproject.com/de/1.7/topics/migrations/
quelle
syncdb
hat ein Problem mit der Datenbankmigration. also nach django 1.7makemigrations
undmigrate
wurden eingeführt. Jetzt in Django ist 1.9syncdb
veraltet. try1.
python manage.py makemigrations
erkennt Änderungen in der Datenbank und erstellt eine.py
Datei im Migrationsordner 2.python manage.py migrate
wendet die Migrationen auf die Datenbank anquelle