使用MySQL Connector/C++编译时提示mysql_connection.h不存在的问题
问题解决步骤
修复CMake中带空格的路径配置
你定义的MySQL Connector路径包含空格,没有用引号包裹会被CMake识别为两个独立参数,导致后续include路径失效,修改对应行:
原代码:set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR C:/Program Files/MySQL/MySQL Connector C++ 8.0)修改为:
set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR "C:/Program Files/MySQL/MySQL Connector C++ 8.0")修正头文件引用规则
mysql_connection.h默认存放于Connector安装目录下的include/cppconn目录,更规范的做法是只将Connector的主include目录加入包含路径,代码中引用时带上cppconn前缀,避免头文件命名冲突:- 删除CMake中多余的
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/cppconn)行 - 修改main.cpp中的头文件引用为:
#include <iostream> #include <cppconn/mysql_connection.h> #include <cppconn/mysql_driver.h>- 删除CMake中多余的
修正数据库连接参数错误
MySQL的connect方法不需要http协议前缀,正确的地址格式为tcp://地址:端口,如果你确认MySQL服务端口为8889,修改对应行为:con = driver->connect("tcp://localhost:8889", "root", "root");检查架构匹配
确认你的项目编译架构(32位/64位)和安装的MySQL Connector/C++架构一致,如果你使用Visual Studio编译,还需要检查lib路径是否对应你的VS版本,部分版本的Connector会将库文件放在lib/vsxx子目录下,需要将link_directories的路径修改为对应库文件所在的实际目录。额外注意
修改完CMake配置后请清空之前的构建目录,重新执行cmake生成构建文件,避免旧缓存导致配置不生效。编译通过后需要将Connector安装目录lib下的mysqlcppconn.dll放到生成的exe同目录,或者将该lib目录加入系统PATH环境变量,避免运行时找不到动态库的错误。
内容的提问来源于stack exchange,提问作者warherolion
相关产品推荐
相关产品推荐

