将 SQLAlchemy 从 0.8 升级到 1.1 后的"SQLite does not support autoincrement for composite primary keys"



从SQLAlchemy 0.8.4升级到1.1.5后,出现以下错误。SQLAlchemy 中的哪些更改导致了这种情况?我该如何解决?

CompileError: (in table 'flights', column 'id'): SQLite does not support autoincrement for composite primary keys
class Flights(db.Model):
    __tablename__ = 'flights'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    departure = db.Column(db.Integer, db.ForeignKey('airport.id'), primary_key=True)
    arrival   = db.Column(db.Integer, db.ForeignKey('airport.id'), primary_key=True)

该主键没有意义。让两个外键成为主键的一部分是没有意义的,仅仅凭借自动增量,它就已经是唯一的了。

如果要确保机场不同,请使用检查约束。如果要快速按机场搜索,请在列上创建索引。

至于错误,在 1.1 中添加了对自动增量和组合键与 SQLite 一起使用的情况的检查,并在文档中进行了相关解释。它可能没有按照您之前的预期进行,但没有引发错误。

相关内容

最新更新