怎么mysql配置文件socket路径设置好了,C语言链接数据库还是失败

Gavin______ 2016-06-21 11:27:47
提示Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
但我的配置文件socket路径已经都写一样了

1[client]
2 port = 3306
3 socket = /tmp/mysql.sock
4 #socket=/var/lib/mysql.sock
5 default-character-set = utf8mb4
6
7 [mysql]
8 prompt="MySQL [\d]> "
9 no-auto-rehash
10
11 [mysqld]
12 port = 3306
13 socket = /tmp/mysql.sock

求助下大神,或者有什么推荐资料可以发一下。我是第一次在linux上用C语言对接数据库,linux是装了lamp环境。然后好像C语言没办法对接,就去百度,然后去mysql官网下载了个mysql-connector-c-6.1.6-linux-glibc2.5-x86_64.tar.gz,好像是专门链接C的库。这是我的C语言写的测试程序。


#include <stdio.h>
#include "mysql.h"
#include <string.h>
void main()
{
char sql[]="select * from user where id=5";
int t;
MYSQL *conn=mysql_init(NULL);
printf("%s\n",mysql_error(conn));
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示
if(!mysql_real_connect(conn,"localhost","root","admin","test", 0, NULL, 0) )
{
printf("连接数据库失败!\n%s\n",mysql_error(conn));
}
t=mysql_real_query(conn,sql,(unsigned int)strlen(sql));
if(t)
{
printf("执行出现异常:%s\n",mysql_error(conn));
}
res=mysql_store_result(conn);
while(row=mysql_fetch_row(res))
{
for(t=0;t<mysql_num_fields(res);t++)
{
printf("%s\t",row[t]);
}
}
mysql_free_result(res);//释放结果集使用的内存。
mysql_close(conn);
}


出现的错误是
连接数据库失败!
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
执行出现异常:MySQL server has gone away
Segmentation fault


请大家指导下,第一次在linux上写C语言链接数据库的程序。很多地方不懂。请多多指教
...全文
2419 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lancelllot 2017-04-19
  • 打赏
  • 举报
回复
想问下楼主的问题解决了吗?我也遇到一样的问题了
renwotao2009 2016-06-22
  • 打赏
  • 举报
回复
改过配置文件后,重新启动mysqld服务没,这样重新加载配置才行啊

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧