Ubuntu23.10下解决C语言调用mysql.h问题

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的操作并没有改变

参考文献

  1. ChatGPT
  2. Linux下MySQL的简单使用
相关推荐
傻乐u兔1 小时前
C语言进阶————指针4
c语言·开发语言
历程里程碑1 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
2601_949146538 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
ccecw9 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30739 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
知南x10 小时前
【Ascend C系列课程(高级)】(1) 算子调试+调优
c语言·开发语言
Goat恶霸詹姆斯12 小时前
mysql常用语句
数据库·mysql·oracle
2的n次方_12 小时前
Runtime 执行提交机制:NPU 硬件队列的管理与任务原子化下发
c语言·开发语言
凡人叶枫13 小时前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
凡人叶枫14 小时前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++