sqlalchemy.exc.NoReferencedTableError:与列X关联的外键找不到用于生成外键的表Y

2024-09-29 01:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在sqlalchemy模式中得到以下错误

python manage.py db migrate
...
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 
'ArxivPaperFigure.arxiv_id' could not find table 'papers' with which to 
generate a foreign key to target column 'arxiv_id' 

我不明白这个错误,因为表格纸不是新的而是以前存在的。我做了很多修改,包括给papers表一个新的表来继承,但是papers中的主键仍然是相同的arxiv峎id

^{pr2}$

指向这张桌子的桌子是

class ArxivPaperFigure(db.Model): 
    __tablename__ = 'ArxivPaperFigure'

    id = db.Column(db.Integer, primary_key=True)
    arxiv_id = db.Column(db.String(1000), db.ForeignKey('papers.arxiv_id'))

我可以通过重写外键来解决这个问题

arxiv_id = db.Column(db.String(1000), db.ForeignKey(Papers.arxiv_id))

但是,我有很多外键,对于一些也有这些外键的表,这个解决方案不起作用。所以我想知道为什么会出现这个错误?文件表确实存在。如果我使用psql并用\d打印所有表,则会找到以下行

public | papers  | table    | user

那么为什么这个引用不再有效?在


Tags: tokeyiddbsqlalchemy错误withtable
1条回答
网友
1楼 · 发布于 2024-09-29 01:30:35

我可以通过显式地命名Papers表来解决这个问题

__tablename__ = 'papers'

不知道为什么突然有必要这么做,因为以前都有用,但有了这个修正,一切都会起作用。在

相关问题 更多 >