sql >> Database teknologi >  >> RDS >> Mysql

SQLAlchemy StaleDataError ved sletning af elementer indsat via ORM sqlalchemy.orm.exc.StaleDataError

Jeg tror, ​​jeg kan give et tip på dette problem. Den korte version er:"Du bliver sandsynligvis nødt til at ændre data i databasen manuelt for at løse problemet".

Den længere version:Jeg havde et lignende problem med SQLite. Jeg fik kortlagt følgende tabel:

ingredients = Table('ingredients', metadata,
    Column('recipe_title', Unicode, ForeignKey('recipes.title'), primary_key=True),
    Column('product_title', Unicode, ForeignKey('products.title'), primary_key=True),
    Column('amount', Integer, nullable=False),
    Column('unit_title', Unicode, ForeignKey('units.title')))

kan du se den sammensatte primærnøgle? Det lykkedes mig på en eller anden måde at indsætte to rækker med det samme par opskrift_titel/produkttitel. Jeg blev overrasket over at finde ud af, at der ikke var en eneste begrænsning på siden af ​​SQLite for denne tabel (ingen primær nøgle, ingen fereign nøgle - det var bare en almindelig vaniljetabel), men godt - det er den måde, sqlalchemy går på, ikke min forretning.

Så da jeg forsøgte at slette et persiteret objekt, der involverede disse to rækker, så sqlalchemy, at dets begrænsninger blev overtrådt, og det kastede 'StaleDataError'. Til sidst skulle jeg bare fjerne en duplicatinng række manuelt fra SQLite-tabellen.



  1. Hvordan genererer man en dynamisk sekvenstabel i MySQL?

  2. Gendannelse af SQL Server-masterdatabasen

  3. MySQL LIKE med rækkevidde virker ikke

  4. Ikke flere data at læse fra socket-fejl