Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd SQLAlchemy StaleDataError podczas usuwania elementów wstawionych przez ORM sqlalchemy.orm.exc.StaleDataError

Chyba mogę dać podpowiedź na ten problem. Krótka wersja to:„Prawdopodobnie będziesz musiał ręcznie zmodyfikować dane w bazie danych, aby rozwiązać problem”.

Dłuższa wersja:miałem podobny problem z SQLite. Zmapowałem następującą 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')))

widzisz ten złożony klucz podstawowy? Jakoś udało mi się wstawić dwa wiersze z tą samą parą przepis_tytuł/produkt_tytuł. Byłem zaskoczony, gdy dowiedziałem się, że po stronie SQLite nie było ani jednego ograniczenia po stronie SQLite dla tej tabeli (bez klucza podstawowego, bez klucza obcego - to była tylko zwykła waniliowa tabela), ale cóż - tak działa sqlalchemia, a nie moja biznes.

Następnie, kiedy próbowałem usunąć obiekt zawierający te dwa wiersze, sqlalchemy zauważył, że jego ograniczenia zostały naruszone i wyrzucił błąd „StaleDataError”. W końcu musiałem tylko ręcznie usunąć jeden zduplikowany wiersz z tabeli SQLite.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyszukaj wiele elementów w wielu kolumnach

  2. Jak uruchomić aplikację Java za pomocą MySQL DB na komputerze bez zainstalowanego MySQL?

  3. Dodaj brakujący miesiąc do wyniku zapytania

  4. Używasz Dropwizard i JDBI do wykonywania zapytań do bazy danych z wieloma schematami?

  5. Porównywanie dat w MySQL z pominięciem części czasu w polu DateTime