MYSQL库和ACL框架中MYSQL类型定义冲突的问题
- Ubuntu中出现MYSQL类型重定义的解决方法
- 先回顾一下Ubuntu中C++ACL框架的安装方法
- 回顾一下MySQL安装方法
- 编译时冲突原因
- 卸载MySQL 8.x版本并安装MySQL5.x版本的方式
- 先卸载MySQL 8.x
- 再安装MySQL 5.x
Ubuntu中出现MYSQL类型重定义的解决方法
先回顾一下Ubuntu中C++ACL框架的安装方法
UbuntuC++安装ACL是为了项目开发的时候方便框架调用比自己实现要方便很多,学过Java的小伙伴肯定了解
https://github.com/acl-dev/acl -> ~/Projects/acl-master.zip
cd ~/Projects
unzip acl-master.zip
cd acl-master
make
sudo make install
sudo mkdir -p /usr/include/acl-lib
sudo cp -rf ./dist/include/* /usr/include/acl-lib
sudo cp -rf ./dist/lib/linux64/* /usr/lib
回顾一下MySQL安装方法
sudo apt-get install mysql-server
数据库root用户的口令:123456
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
一般这里如果安装是MySQL8.x的版本就会有类型冲突
终端窗口输入:mysql -V 查看版本 打来MySQL来看版本
编译时冲突原因
我的是Ubuntu16系统也是deepin一样的解决方式,一般这里如果安装是MySQL 8.x的版本就会和ACL有类型冲突
终端窗口输入:mysql -V 查看版本 或者登上MySQL来看版本,是MYSQL8.x的就只有把MYSQL8.x卸载了,安装5.x的版本,或者等ACL库更新也许作者会解决这个问题。 ACL的作者是郑树新(微博:http://weibo.com/zsxxsz)
换个MySQL5.x的版本再次编译一下,就不会出现MySQL库和ACL框架都定义了名为MYSQL这个数据类型而导致冲突报错了。
改MySQL或者ACL的库函数命名不现实,只有这样降低版本了。
卸载MySQL 8.x版本并安装MySQL5.x版本的方式
先卸载MySQL 8.x
终端窗口执行以下代码
sudo apt-get autoremove --purge mysql-server
弹出界面
选是即可卸载掉MySQL 8.x的版本
也可以参照其他的文档博客卸载掉,不同的版本和系统可能卸载的方式不一样
再清清理残留数据 终端执行以下代码
dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P
再安装MySQL 5.x
这时候用sudo apt-get install mysql-server 安装的话可能还是MySQL8.x的版本
可以试试用API的安装方式
通过APT方式安装
说明:此种方式完全参考官方提供的教程链接: https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/ 下载官方提供的mysql-apt-config.deb包进行APT源设置,下载地址:https://dev.mysql.com/downloads/repo/apt/
不想登录oracle账号的这是我的百度云链接 链接:https://pan.baidu.com/s/1FopERWvaJNBIjIh9fiL7KQ 提取码:xx1i
Ubuntu中有了这个deb格式的安装包后
在终端中执行 sudo dpkg -i mysql-apt-config_0.8.16-1_all.deb 安装这个包
如图:
先选下面的选项
再选择一下的5.7版本的MySQL,如图:
再回车确定,退出到一开始选择界面选OK回车退出,就设置好了,这时候再终端中执行
sudo apt-get install mysql-server 就是默认安装的MySQL5.x版本的了。mysql -V 查看一下 就是MySQL5.7的版本了。
后续的MySQL配置
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
到这里就OK了。