Die Spalte „tbl1.id“ hat nicht den gleichen Datentyp wie die referenzierende Spalte „tbl2.field_id“ im Fremdschlüssel „tPython

Python-Programme
Anonymous
 Die Spalte „tbl1.id“ hat nicht den gleichen Datentyp wie die referenzierende Spalte „tbl2.field_id“ im Fremdschlüssel „t

Post by Anonymous »

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post