Flask (1170,u“BLOB/TEXT列';用户id';用于密钥规范,但不带密钥长度)

Flask (1170,u“BLOB/TEXT列';用户id';用于密钥规范,但不带密钥长度),flask,sqlalchemy,flask-migrate,Flask,Sqlalchemy,Flask Migrate,我正在我的flask应用程序中使用MySQL数据库。我也在使用pymysql的SQLAlchemy。该应用程序部署在web服务器上(基于linux,特别是Ubuntu)。我正在尝试使用flask migrate应用迁移,但我不断得到错误 (1170,u“BLOB/TEXT列‘user_id’在密钥规范中使用,没有密钥长度) 我的主键如下所示: id = db.Column(db.String(32),default=lambda: str(uuid4().hex), primary_key=Tr

我正在我的flask应用程序中使用MySQL数据库。我也在使用pymysql的SQLAlchemy。该应用程序部署在web服务器上(基于linux,特别是Ubuntu)。我正在尝试使用flask migrate应用迁移,但我不断得到错误

(1170,u“BLOB/TEXT列‘user_id’在密钥规范中使用,没有密钥长度)

我的主键如下所示:

id = db.Column(db.String(32),default=lambda: str(uuid4().hex), primary_key=True)
出现此错误的特定表是关联表:代码为

user_association_table = db.Table('association', db.Model.metadata,
    db.Column('user_id', db.String(32), db.ForeignKey('user.id')),
    db.Column('article_id', db.String(32), db.ForeignKey('article.id'))
)

我也看到过类似的问题,但它们解决了如何直接使用MySQL修复它。由于我对mysql的生成方式几乎没有控制权,如何绕过此错误?

结果表明,我尝试应用迁移的原始mysql数据库与主键的大小不完全一致
-->db.String(32)
删除并重新创建数据库使得迁移工作正常。 如果数据库有数据,那么在不丢失数据的情况下重新创建数据库会更痛苦