Mysql
 sql >> база данни >  >> RDS >> Mysql

SQLAlchemy StaleDataError при изтриване на елементи, вмъкнати чрез ORM sqlalchemy.orm.exc.StaleDataError

Предполагам, че мога да дам подсказка по този проблем. Кратката версия е:„Вероятно ще трябва да модифицирате данните в базата данни ръчно, за да разрешите проблема“.

По-дългата версия:имах подобен проблем със SQLite. Имах картографирана следната таблица:

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')))

виждате този съставен първичен ключ? Някак си успях да вмъкна два реда с една и съща двойка recipe_title/product_title. Бях изненадан да открия, че няма нито едно ограничение от страната на SQLite за тази таблица (без първичен ключ, без fereign ключ - това беше просто обикновена ванилова таблица), но добре - така върви sqlalchemy, не моята бизнес.

След това, когато се опитах да изтрия persited обект, включващ тези два реда, sqlalchemy видя, че неговите ограничения са нарушени и хвърли „StaleDataError“. Накрая просто трябваше да премахна ръчно един дублиращ се ред от таблицата на 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. Как да задам sql_mode в my.cnf в MySQL 8?

  2. ALTER TABLE без да заключвате масата?

  3. как да изберете топ 5 максимални стойности в mytable

  4. Използване на заместител? в Go mySql заявка за нещо различно от int

  5. mysql failover:как да избера подчинен като нов главен?