Vorab. bin noch sehr neu in django und python
Hey habe seit gestern einige probleme mit meiner db die mich zum löschen(der db und der migration-files) und neu erstellen der db gezwiungen haben.
Ich beschreibe euch mal den Ablauf:
1. neue db erstellen. (connection sucessfull)
2. settings.py: DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
},
'real_default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'real_db.sqlite3',
}
}
(alte migration-files schon gelöscht )
3. Terminal run: python manage.py makemigrations myapp
(ohne fehler- migration-files werden erstellt)
4. python manage.py migrate --database=real_default
5. Fehler: django.db.utils.OperationalError: table "myapp_name" already exists
(obwohl alle alten dbs gelöscht wurden...)
Hier ist nochmal die komplette fehlermeldung: (venv) PS C:\Users\Wired\PycharmProjects\djangoProject> python manage.py makemigrations home
home\migrations\0001_initial.py
- Create model LoadVideoForPageCreation
- Create model CreateCategory
- Create model ProfileImage
- Create model SearchPictures
- Create model UserCredentials
- Create model UserAddPicture
- Create model GraphicUpload
(venv) PS C:\Users\Wired\PycharmProjects\djangoProject> python manage.py migrate --database=real_default
Operations to perform:
Apply all migrations: admin, auth, contenttypes, home, sessions, taggit
Running migrations:
Applying home.0001_initial...Traceback (most recent call last):
File "C:\Users\Wired\PycharmProjects\djangoProject\venv\lib\site-packages\django\db\backends\utils.py", line 87, in _execute
return self.cursor.execute(sql)
File "C:\Users\Wired\PycharmProjects\djangoProject\venv\lib\site-packages\django\db\backends\sqlite3\base.py", line 324, in execute
return super().execute(query)
sqlite3.OperationalError: table "home_searchpictures" already exists
(Bing weis lieder auch nicht weiter...)
Django SQLite DB Fehler
Warum verwendest du mehr als eine Datenbank?
Die Fehlermeldung ist recht eindeutig: Durch die Migration soll eine Tabelle angelegt werden, die bereits da ist.
Kann sein, dass du das mit den Migrationen gegen verschiedene Datenbanken falsch machst. Ich habe noch nie mehr als eine Datenbank in Django gebraucht. Wenn du keinen wirklich guten Grund dafür hast: Mach es einfach nicht.
Die Fehlermeldung ist recht eindeutig: Durch die Migration soll eine Tabelle angelegt werden, die bereits da ist.
Kann sein, dass du das mit den Migrationen gegen verschiedene Datenbanken falsch machst. Ich habe noch nie mehr als eine Datenbank in Django gebraucht. Wenn du keinen wirklich guten Grund dafür hast: Mach es einfach nicht.
- noisefloor
- User
- Beiträge: 4195
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Man muss sich dann halt nur noch zusätzlich Router definieren, damit Django weiß, wann welche DB genutzt werden soll. Ist in der Doku erklärt.
Gruß, noisefloor
Ich hatte mal ein Projekt mit drei DBs (3x SQLite). Der Grund war, das #ausgründen die eigentlichen Daten von App 2 und App 3 in einer anderen DB liegen sollten.Ich habe noch nie mehr als eine Datenbank in Django gebraucht.
Man muss sich dann halt nur noch zusätzlich Router definieren, damit Django weiß, wann welche DB genutzt werden soll. Ist in der Doku erklärt.
Gruß, noisefloor