by Anonymous » 17 Jan 2025, 11:14
Ich habe ein Problem mit Migrationen. Ich verwende eine Datenbank, die mit der alten Django-Version
1.4 in einer neuen Anwendung mit Django-Version
>5 erstellt wurde. Das Problem besteht darin, dass das alte Django einen anderen Datentyp für das Primärschlüsselfeld verwendet (AutoField - int in der Datenbank). Im Datenbankdatentyp des alten Django ist der Primärschlüssel also
"int" und im neuen Django-Datentyp ist "bigint". Ich habe ein neues Modell mit Fremdschlüssel für das alte Modell erstellt und erhalte nun einen Fehler:
Spalte „tbl1. id‘ ist nicht der gleiche Datentyp wie die referenzierende Spalte ‚tbl2.field_id‘ im Fremdschlüssel ‚tb1_field_id_tbl2_id‘
Wie kann ich dieses Problem lösen?
Das Einzige, was hilft, ist die Zuweisung von db_constraint=True im Feld models.ForeignKey. Aber ich möchte dieses Risiko nicht eingehen.
Dinge, die ich bereits versucht habe:
- Ändern Sie DEFAULT_AUTO_FIELD in django.db.models.AutoField
- Setzen Sie die ID der Fremdschlüsseltabelle explizit auf AutoField. Zu viele Abhängigkeiten von dieser Tabelle, sodass sie bei anderen Beziehungen abstürzt.
- Explizit einem bestimmten Feld zu_field="id" zuordnen
- Setzen Sie db_constraint=False – es hilft, ist aber nicht die beste Lösung.
- Neue Migration für neues Modell mit AutoField erstellt. Es scheint, als würde Django immer noch auf bigint für die Fremdschlüsseltabelle
verweisen
Ich habe ein Problem mit Migrationen. Ich verwende eine Datenbank, die mit der alten Django-Version [b]1.4[/b] in einer neuen Anwendung mit Django-Version [b]>5[/b] erstellt wurde. Das Problem besteht darin, dass das alte Django einen anderen Datentyp für das Primärschlüsselfeld verwendet (AutoField - int in der Datenbank). Im Datenbankdatentyp des alten Django ist der Primärschlüssel also [b]"int"[/b] und im neuen Django-Datentyp ist "bigint". Ich habe ein neues Modell mit Fremdschlüssel für das alte Modell erstellt und erhalte nun einen Fehler:
Spalte „tbl1. id‘ ist nicht der gleiche Datentyp wie die referenzierende Spalte ‚tbl2.field_id‘ im Fremdschlüssel ‚tb1_field_id_tbl2_id‘
Wie kann ich dieses Problem lösen?
Das Einzige, was hilft, ist die Zuweisung von db_constraint=True im Feld models.ForeignKey. Aber ich möchte dieses Risiko nicht eingehen.
Dinge, die ich bereits versucht habe:
[list]
[*]Ändern Sie DEFAULT_AUTO_FIELD in django.db.models.AutoField
[*]Setzen Sie die ID der Fremdschlüsseltabelle explizit auf AutoField. Zu viele Abhängigkeiten von dieser Tabelle, sodass sie bei anderen Beziehungen abstürzt.
[*]Explizit einem bestimmten Feld zu_field="id" zuordnen
[*] Setzen Sie db_constraint=False – es hilft, ist aber nicht die beste Lösung.
[*]Neue Migration für neues Modell mit AutoField erstellt. Es scheint, als würde Django immer noch auf bigint für die Fremdschlüsseltabelle
[/list] verweisen