Qt Release版可执行程序连接SQLite数据库失败问题求助
问题原因与解决方案
核心问题定位
你遇到的是Qt SQL模块的驱动插件部署缺失问题,Qt的数据库驱动并非集成在QtSql核心dll中,而是作为独立插件存放,仅拷贝bin目录的基础dll无法满足SQL模块运行要求。
具体解决方案
- 缺失SQLite驱动插件修复
在你的Qt安装目录下找到对应编译套件(与你Release编译使用的套件完全一致)的插件路径:[Qt安装根目录]/[Qt版本号]/[对应编译器文件夹]/plugins/sqldrivers,将该路径下的Release版本SQLite驱动qsqlite.dll(注意不要使用带d后缀的Debug版驱动qsqlited.dll)复制到你的Release可执行文件所在目录下,需要先在exe同级目录新建名为sqldrivers的文件夹,再把qsqlite.dll放入该文件夹即可。 - 权限校验排查
你当前代码中数据库使用绝对路径C:/SQLite/EPMS_1.db,如果运行exe的用户对该路径没有读写权限也会导致连接失败,可先将数据库文件拷贝到exe同级目录,修改代码中数据库路径为相对路径测试:EPMS_db.setDatabaseName("./EPMS_1.db"); - 增加错误日志精确定位
你当前代码仅打印连接失败结果,没有输出具体错误原因,可修改连接失败分支的代码,打印具体报错信息:
从报错信息可直接判断是驱动未找到、文件不存在还是权限不足类问题。if (!EPMS_db.open()) { qDebug()<<("Database failed to connect"); qDebug()<< "Error details:" << EPMS_db.lastError().text(); return false; } - 版本匹配校验
确保你拷贝的所有dll、驱动插件的位数(32/64位)、编译套件类型(MinGW/MSVC)、Qt版本与你Release编译使用的环境完全一致,版本不匹配也会导致驱动加载失败。
内容的提问来源于stack exchange,提问作者KimT
相关产品推荐
相关产品推荐

