Ubuntu23.10下解决C语言调用mysql.h问题
导语
在学习C语言和MySQL的调用的时候遇到包和版本的问题,由于使用的书很老(10年的),因此很多MySQL的包已经过时,在查找很多资料和询问gpt之后得到了解决方案
环境准备
Ubuntu的版本如下,以及使用的是清华源
问题和解决方案
在使用C语言调用MySQL的时候一直出现找不到mysql.h的相关文件的问题,于是重新清空了mysql进行如下的重新安装(也可以直接开新机安装)
新版本的MySQL已经更改了C语言和mysql.h的连接包,所以需要先安装MySQL Connector/C,具体命令如下
shell
sudo apt-get update
sudo apt-get install libmysqlclient-dev
mysql_config --cflags
mysql_config --libs
后两条命令是检测MySQL Connector/C是否安装完成,由于新版本的MySQL已经不支持书上的写法,所以需要安装这个包,正常应该显示如下图
之后直接安装服务器即可
shell
sudo apt-get update
sudo apt-get install mysql-server
通过下面的程序验证安装是否成功
c
#include <stdio.h>
#include <mysql/mysql.h>
int main() {
MYSQL *conn;
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init() failed\n");
return EXIT_FAILURE;
}
if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));
mysql_close(conn);
return EXIT_FAILURE;
}
printf("Connected to the database successfully!\n");
mysql_close(conn);
return EXIT_SUCCESS;
}
执行的命令和结果如下
shell
gcc -o test_program test_program.c $(mysql_config --cflags) $(mysql_config --libs)
之后可以在MySQL中开表来测试一下C语言程序是否能操作对应的表,不过需要写对shell的编译命令
总结
新版的MySQL更改了与C语言的连接方式,但是大部分C语言调用MySQL的操作并没有改变