Ubuntu 18.04全新环境安装MHN初始化数据库报属性不可设置错误如何修复
MHN数据库初始化环节AttributeError修复方案
错误根因
堆栈最终抛出的AttributeError: can't set attribute为典型的依赖版本兼容问题:
- 旧版Flask-SQLAlchemy(MHN项目内置依赖)的驱动适配逻辑中,存在对数据库连接URL对象
database属性的赋值操作 - Ubuntu 18.04软件源默认安装的新版SQLAlchemy,已将
database属性调整为只读属性,不支持写入操作,直接触发赋值报错
执行步骤
- 保留当前安装报错的终端会话,激活MHN项目内置的Python2虚拟环境:
source /opt/mhn/env/bin/activate - 安装和MHN代码逻辑完全匹配的指定版本依赖:
- 安装兼容旧赋值逻辑的Flask-SQLAlchemy版本:
pip install flask-sqlalchemy==2.1 - 安装适配上述版本的SQLAlchemy组件:
pip install sqlalchemy==1.0.19
- 安装兼容旧赋值逻辑的Flask-SQLAlchemy版本:
- 手动执行数据库初始化操作,跳过安装脚本的报错节点:
- 切换到项目服务端代码目录:
cd /opt/mhn/server - 运行初始化命令:
python initdatabase.py
- 切换到项目服务端代码目录:
- 确认初始化脚本执行完成无异常后,切回原安装流程的终端窗口,按提示继续推进剩余安装环节即可
避坑提示
- 不要通过修改MHN源码适配新版依赖的方式修复问题,项目基于Python2.7开发,强行适配新版组件会触发大量语法、接口兼容问题,改造成本远高于依赖版本降级
- 初始化操作完成后,可通过
pip list | grep -E "(SQLAlchemy|Flask-SQLAlchemy)"核对安装版本,避免虚拟环境内多版本包混装,引发后续数据库连接异常
内容的提问来源于stack exchange,提问作者cyberdeep
相关产品推荐
相关产品推荐

