Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQLAlchemy StaleDataError khi xóa các mục được chèn qua ORM sqlalchemy.orm.exc.StaleDataError

Tôi đoán tôi có thể đưa ra một gợi ý về vấn đề này. Phiên bản ngắn gọn là:"Bạn có thể sẽ phải sửa đổi dữ liệu trong Cơ sở dữ liệu theo cách thủ công để giải quyết vấn đề".

Phiên bản dài hơn:Tôi gặp sự cố tương tự với SQLite. Tôi đã ánh xạ bảng sau:

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

xem khóa chính tổng hợp đó không? Bằng cách nào đó, tôi đã chèn được hai hàng với cùng một cặp công thức_title / product_title. Tôi đã rất ngạc nhiên khi phát hiện ra rằng không có một ràng buộc nào ở phía SQLite đối với bảng này (không có khóa chính, không có khóa đăng ký lại - nó chỉ là một bảng đơn giản), nhưng tốt - đó là cách sqlalchemy đi, không phải của tôi kinh doanh.

Sau đó, khi tôi cố gắng xóa một đối tượng cố định liên quan đến hai hàng đó, sqlalchemy thấy rằng các ràng buộc của nó đã bị vi phạm và nó đã ném ra 'StaleDataError'. Cuối cùng, tôi chỉ phải xóa một hàng trùng lặp theo cách thủ công khỏi bảng 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. Cách tạo khóa chính tổng hợp trong MySQL

  2. Cách viết câu lệnh MYSQL CASE WHEN với nhiều điều kiện tìm kiếm?

  3. mysql hiển thị các khe thời gian có sẵn và các khe thời gian bận từ bảng

  4. CannotAcquireLockException (Spring, Hibernate, MySQL)

  5. SQL Server tương đương ELT () trong MySQL là gì?