首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alembic sqlalchemy.exc.NoReferencedColumnError:(使用Flask- and Alembic和Flask-Migrate)

Alembic sqlalchemy.exc.NoReferencedColumnError:(使用Flask- and Alembic和Flask-Migrate)
EN

Stack Overflow用户
提问于 2019-02-20 04:45:56
回答 1查看 522关注 0票数 0

当我尝试迁移我的模式时,Alembic一直给我这个错误,尽管最初的迁移进行得很顺利。

sqlalchemy.exc.NoReferencedColumnError: Could not initialize target column for ForeignKey 'dataset.datasetid' on table 'analysis': table 'dataset' has no column named 'datasetid'

下面是我的models.py类的一部分

代码语言:javascript
复制
class Dataset(db.Model):
    DatasetID = db.Column(db.Integer, primary_key = True)
    SampleID = db.Column(db.String(50), db.ForeignKey('sample.SampleID', onupdate="cascade",ondelete="restrict"), nullable=False)
    UploadDate = db.Column(db.Date, nullable=False)
    UploadID = db.Column(db.Integer,db.ForeignKey('uploaders.UploadID', onupdate="cascade",ondelete="restrict"), nullable=False)
    UploadStatus = db.Column(db.String(45), nullable=False)
    HPFPath = db.Column(db.String(500))
    DatasetType = db.Column(db.String(45), nullable=False)
    SolvedStatus = db.Column(db.String(30), nullable=False)
    InputFile = db.Column(db.Text)
    RunID = db.Column(db.String(45))
    Notes = db.Column(db.Text)
    analyses = db.relationship('Analysis',backref='dataset',lazy='dynamic')
    data2Cohorts = db.relationship('Dataset2Cohort',backref='dataset',lazy='dynamic')

class Dataset2Cohort(db.Model):
    __tablename__='dataset2Cohort'
    DatasetID = db.Column(db.Integer, db.ForeignKey('dataset.DatasetID', onupdate="cascade",ondelete="cascade"), nullable=False, primary_key = True)
    CohortID = db.Column(db.Integer, db.ForeignKey('cohort.CohortID', onupdate="cascade", ondelete="restrict"),  nullable=False, primary_key = True)

class Analysis(db.Model):
    AnalysisID = db.Column(db.String(100), primary_key = True)
    DatasetID = db.Column(db.Integer, db.ForeignKey('dataset.DatasetID', onupdate="cascade",ondelete="cascade"), nullable=False)
    PipelineVersion = db.Column(db.String(30))
    ResultsDirectory = db.Column(db.Text)
    ResultsBAM = db.Column(db.Text)
    AssignedTo = db.Column(db.String(100), nullable=True)
    analysisStatuses = db.relationship('AnalysisStatus', backref='analysis', lazy='dynamic')

有人知道为什么即使我在数据集表中有DatasetID列,我仍然得到这个错误吗?

谢谢你,泰佳。

EN

回答 1

Stack Overflow用户

发布于 2019-02-20 23:59:02

找到了解决方案。

这似乎是MySQL8.x版本在外键声明中引用列名的问题-MySQL8.x版本在外键语句中引用列时总是使用小写,这会导致与sqlalchemy不兼容。这里讨论了这个问题。

https://github.com/sqlalchemy/sqlalchemy/issues/4344

解决方案是将sqlalchemy升级到最新版本(>=1.2.x)。

太好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54774645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档