2017-09-06 2 views
0

Ich habe eine Datenbank voller Tabellen, ich habe versucht, ein Objekt mit mehreren Primärschlüsseln zu migrieren.Django nicht migriert

Es lassen Sie mich das tun:

python manage.py makemigrations 

aber wenn ich versuche, läuft das:

python manage.py migrate 

Ich erhalte:

Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/var/www/env/lib/python3.5/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line 
    utility.execute() 
    File "/var/www/env/lib/python3.5/site-packages/django/core/management/__init__.py", line 355, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/var/www/env/lib/python3.5/site-packages/django/core/management/base.py", line 283, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/var/www/env/lib/python3.5/site-packages/django/core/management/base.py", line 330, in execute 
    output = self.handle(*args, **options) 
    File "/var/www/env/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 204, in handle 
    fake_initial=fake_initial, 
    File "/var/www/env/lib/python3.5/site-packages/django/db/migrations/executor.py", line 115, in migrate 
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards 
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/migrations/executor.py", line 244, in apply_migration 
    state = migration.apply(state, schema_editor) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/migrations/migration.py", line 129, in apply 
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/migrations/operations/models.py", line 97, in database_forwards 
    schema_editor.create_model(model) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/backends/base/schema.py", line 303, in create_model 
    self.execute(sql, params or None) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/backends/base/schema.py", line 120, in execute 
    cursor.execute(sql, params) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/backends/utils.py", line 80, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/var/www/env/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/backends/utils.py", line 63, in execute 
    return self.cursor.execute(sql) 
    File "/var/www/env/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 326, in execute 
    return Database.Cursor.execute(self, query) 
django.db.utils.OperationalError: table "realtranslation_languageactivate" has more than one primary key 

ich das Modell sogar versucht, das Löschen von models.py, und macht Migrationen erneut, aber es wird nicht weggehen.

Ich habe auch versucht, die Tabelle in DBSHELL fallen zu lassen, aber es war nicht da.

Was sind meine Optionen, um meine Datenbank zu behalten, aber ohne die letzten Migrationen?

Antwort

0

Um die Datenbank ohne die letzten Migrationen beizubehalten, können Sie einfach die Migrationsdatei löschen, die dem Zeitpunkt entspricht, als Sie makemigrations für das Modell ausgeführt haben.

Django unterstützt nur einen Primärschlüssel mit einer einzelnen Spalte. Wenn Sie der Tabelle sqlite3 mehrere Primärschlüssel hinzufügen möchten, können Sie versuchen, die Tabelle wie so zu erstellen und dann noch weitere Modelle hinzuzufügen.

Eine bessere Lösung ist wahrscheinlich, die Methode here

zu folgen
Verwandte Themen