linux(ubuntu) 下安装connector c++ 来连接mysql

目录

1 下载connector c++源码

2 安装依赖文件

1. 编译工具Cmake

2. Mysql的Client Libary

3. boost C++ library

4. openssl 库

3 编译

1. 创建build文件夹

2. 进入build文件夹,执行指令

3. 编译

4. 将编译后的文件放在正确的位置

4 使用

5. 注意事项


由于在使用c++编写算法,同时需要连接mysql数据库,开始时,我直接使用的c api来连接数据库,发现非常繁琐,于是开始使用connect c++ 来连接和访问数据库。

1 下载connector c++源码

确实可以直接下载connector c++的库直接使用,但是不推荐,因为直接用库,可能会由于系统原因导致莫名其妙的错误,我最开始就是直接下载的ubuntu 18.04的库,但是由于我的系统是19.10,但是官方并没有提供19.10的库,所以被迫使用18.04的库,刚开始能够正常使用,但是过了几天,就突然无法使用,报内存错误,特别坑,所以推荐使用源码,在系统上编译后,使用。

官网下载地址

如果觉得下载慢,或者想为我贡献C币,可以下载这个:

如图,选择Source Code 以及对应系统。然后下载即可。

2 安装依赖文件

1. 编译工具Cmake

需要Cmake3.0以上

2. Mysql的Client Libary

就是mysql的 c api

3. boost C++ library

只有当你需要编译legacy JDBC才需要boost库,一般是不需要的,如果需要,得boost 1.59.0版本以上

4. openssl 库

需要1.0版本以上

#安装cmake
sudo apt-get install cmake
#安装mysql,现在是2020年,默认安装mysql8.0
sudo apt-get install mysql-client mysql-server
#安装mysql的c api
sudo apt-get install libmysqlclient-dev
# 安装openssl
sudo apt-get install openssl
# 安装boost
sudo apt-get install libboost-dev

3 编译

1. 创建build文件夹

在源码文件夹内创建一个build文件夹

2. 进入build文件夹,执行指令

cmake   ../    -DCMAKE_BUILD_TYPE=Release  -DWITH_JDBC=true 

3. 编译

sudo make
sudo make install

4. 将编译后的文件放在正确的位置

用上述方法编译,并没有指定安装位置,所以会将编译得到的文件默认放在

/usr/local/mysql

路径下

进入connnector-c++ ,里面有

将include文件夹中的jdbc文件夹里面的所有文件(包括文件夹)复制到 /usr/local/include文件夹中

sudo cp -r include/jdbc/* /usr/local/include/

然后将lib64文件夹中的所有库,复制到 /usr/lib 目录下

sudo cp lib64/* /usr/lib/

至此,安装完毕,可以开始使用。

4 使用

#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/driver.h>

using namespace sql;
using namespace std;

#define DBHOST "tcp://127.0.0.1:3306"
#define USER "root"
#define PASSWORD "123456"

int main(){

  Driver *driver;
  Connection *conn;
  driver = get_driver_instance();
  conn = driver->connect(DBHOST, USER, PASSWORD);
  cout<<"DataBase connection autocommit mode = "<<conn->getAutoCommit()<<endl;
  delete conn;
  driver = NULL;
  conn = NULL;
  return 0;
}

使用

g++ mysqlconn.cpp -lmysqlcppconn

编译

5. 注意事项

一天后,我又在两台云服务器上进行了安装,但是中间都遇到了很多坑。一台是阿里云,安装的系统是centos7 所安装的软件非常地老旧,cmake只有2.8,需要自己下载源码,编译高版本的cmake。centos的安装命令与ubuntu不同,需要小心。另一台是天翼云的云服务器,使用的是ubuntu1604.这两台安装过程中,都遇到了一个坑,在我完成connector c++的编译之后,再去编译我编写的应用程序时,链接的时候报错:

意思是libmysqlcppconn动态库中有一个符号未定义,需要依赖其他库。刚遇到这个错误的时候我是茫然无知的,对这个错误进行了 大量的搜索,都没找到有用的信息,搞了一个上午。后来终于找到一个方法:

给编译器 g++ 加一个选项:

g++ ... -Wl,-allow-shlib-undefined

这个选项的意思是,允许动态库中有未定义的符号。加了之后,我的就能正常使用了,至于对使用有没有什么影响,我暂时没发现。

最后,需要说一下,同志们,保护好自己的头发。

猜你喜欢

转载自blog.csdn.net/qq_39545674/article/details/106618299
今日推荐