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

Gavin______ 2016-06-21 11:37:10
提示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语言写的测试程序。

C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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语言链接数据库的程序。很多地方不懂。请多多指教
...全文
76 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
rick-he 2016-06-23
  • 打赏
  • 举报
回复
你的用户名和密码会错误吗?这段代码是在数据库安装的本地运行的吗?数据库启动了吗? Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'报错的信息看是mysql_real_connect这个函数是通过sock链接的?你可以查下

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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