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

时间:2018-07-29 08:33:47

标签: flask sqlalchemy flask-migrate

我在flask应用程序中使用MySQL数据库。我也将SQLAlchemy与pymysql一起使用。该应用程序部署在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的生成方式几乎没有控制,因此如何绕过此错误?

1 个答案:

答案 0 :(得分:0)

找出我要对其应用迁移的原始MySQL数据库与主键--> db.String(32)的大小并不完全一致。删除并重新创建数据库可使迁移正常进行。 如果数据库中有数据,那么在不丢失数据的情况下重新创建数据库将更加痛苦。