Sql-Alchemy; 外键错误
我的问题主要集中在以下代码上:
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)