Sql-Alchemy; 外键错误

1 投票
1 回答
637 浏览
提问于 2025-04-18 07:30

我的问题主要集中在以下代码上:

class TaskOneLine(db.Model):
    userId = db.Column(db.String(64), primary_key=True)
    timestampStart = db.Column(db.BIGINT, primary_key=True, autoincrement=False)
    includedObjects = db.relationship("TaskOneIncludedObject")

class TaskOneIncludedObject(db.Model):
    id = db.Column(db.BIGINT, primary_key=True)

    #parent foreign key required for one-to-many-relation
    userId = db.Column(db.String(64), db.ForeignKey('task_one_line.userId'))
    timestampStart = db.Column(db.BIGINT, db.ForeignKey('task_one_line.timestampStart'), autoincrement=False)

(这是flask中的sql-alchemy封装,但我觉得这对问题没有影响。)

上面的代码给我带来了:

sqlalchemy.exc.OperationalError: (OperationalError) (1005, "Can't create table 'crowdtracker.task_one_included_object' (errno: 150)")

我不明白为什么会出现这个错误。当我去掉timestampStart这一列时,查询就能正常运行。我还在外键上添加了autoincrement=False,但还是没有成功。

最好的祝福

1 个回答

1

我现在解决了这个问题,方法是通过 ForeignKeyConstraint() 来定义复合外键,这个方法似乎支持复合外键。 (http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html#defining-foreign-keys)

撰写回答