SQLAlchemy erlaubt null als ForeignKey

10

Sagen wir, ich habe zwei Modelle

%Vor%

Ich kann ein neues Dokument mit entity_id NULL erstellen. Aber sobald ich eine gültige entity_id für dieses Dokument gesetzt habe, kann ich es nicht mehr zurücksetzen. Ich bekomme einen Fehler:

Cannot add or update a child row: a foreign key constraint fails

Wie kann ich in einem Dokument null auf entity_id setzen, wenn es eine gültige entity_id hat?

    
ma2s 21.04.2015, 18:03
quelle

2 Antworten

5

Ihre ORM-Definition sieht gut aus, DocumentModel.entity_id ist in der Tat nullbar. Was ich in diesem Fall tun würde, ist die tatsächliche Tabellendefinition in MySQL zu überprüfen und sicherzustellen, dass sie mit Ihrer ORM-Definition übereinstimmt, z. B.

%Vor%     
MOCKBA 25.04.2015, 20:19
quelle
-1

null ist für eine untergeordnete Zeile nicht gültig. Als Alternative erstellen Sie ein Elternelement, das nur für Null-Kinder verwendet wird, und legen Sie den Schlüssel für diese ID fest. Ich verstehe den Grund dafür nicht wirklich, weil Sie keine Waisenrekorde wollen. Wenn die Beziehung nicht wirklich 1 zu viele mit einer übergeordneten untergeordneten Beziehung ist, sollten Sie einen anderen Beziehungstyp berücksichtigen oder ein Feld hinzufügen, um untergeordnete Datensätze inaktiv zu machen.

    
rfportilla 21.04.2015 22:01
quelle