我按照 Flask 教程 (https://flask.palletsprojects.com/en/3.0.x/tutorial/) 创建了一个带有工厂和 SQLite 数据库的 Flask 应用程序。我通过 uwsgi 在服务器上运行该应用程序,并添加了 CI/CD 的 github 操作。
我修改了 schema.sql,重新初始化了 SQLite 数据库并重新安装了应用程序。现在我仍然可以在生产服务器上运行它,但是当我使用 uwsgi 启动它时,我得到 sqlite3.OperationalError: 未找到列(我更改/添加的列之一)。当我检查我的 SQLite 文件时,该列就在那里。
有什么想法吗?
问题出在 Flask 的 instance_path 上。
我的数据库位于/home/username/appname/instance/,但是Flask查找数据库的instance_path是:/home/username/.local/var/appname-instance/
当我在 create_app() 中显式设置 instance_path 时,它就起作用了。