加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Python3 使用 SQLalchemy ORM 模型 upgrade 报错 max key length

发布时间:2021-05-21 04:52:47 所属栏目:大数据 来源: https://blog.csdn.net/yilovex
导读:开发背景 公司使用 Flask 进行开发,使用 sqlalchemy ORM 模型,在开发环境中 migrate 和 upgrade 正常通过,但是在部署测试环境的时候报了一行错误: sqlalchemy.exc.OperationalError: (MysqLdb._exceptions.OperationalError) (1071,'Specified key was t
开发背景

公司使用 Flask 进行开发,使用 sqlalchemy ORM 模型,在开发环境中 migrateupgrade 正常通过,但是在部署测试环境的时候报了一行错误:

sqlalchemy.exc.OperationalError: (MysqLdb._exceptions.OperationalError) (1071,'Specified key was too long; max key length is 767 bytes')

根据报错提示可知原因是:指定的密钥太长,最大密钥长度为767字节。这其实是在定义字段的时候,我加上了索引,导致在旧版本的 MysqL 中超出了索引字节的限制。

解决方案

启用系统变量 innodb_large_prefix,系统变量需满足一下几个条件:

1. 系统变量 innodb_large_prefix 为 ON
2. 系统变量 innodb_file_format 为 Barracuda
3. ROW_FORMAT为DYNAMIC 或 COMPRESSED

还有一种解决方案是使用前缀索引,但是在 sqlalchemy 中我没有找到使用前缀的方式,所以纯 sql 建议使用前缀索引,sqlalchemy 就乖乖的使用上述的方案吧

参考文章:https://blog.csdn.net/noDr_butTry/article/details/90813327

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读