c 连不上mysql数据库_C语言访问Mysql——localhost连不到数据库,换成具体ip可以的问题...

先写点前期的东西

最初代码里写的#include

问题1:error: mysql.h: No such file or directory

作为一个菜鸟,百度吧。。。

有人说是因为没有安装mysql或者没有安装mysql链接库,可以用yum search mysql或者apt-cache search mysql搜索mysql相关安装文件

然后yum install XXX安装解决;

有人说是mysql的包没装好,通过装libmysqlclient15_dev解决;

但是,,,yum install时提示我包已安装且是最新版本,所以我的问题还在。。困惑ing

然后,我突然醒悟地去查查。。 whereis mysql.h,看到了路径/usr/include/mysql。。。,就是说我的这个头文件路径是/usr/include/mysql/mysql.h

然后把代码里改成了#include 就ok了~

很简单的问题,只是太菜缺少意识,不懂#include咋工作的

问题2:编译时出现错误undefined reference to `mysql_init'  //程序里用到的mysql接口函数都有这个错误提示

这个百度一下就能知道

gcc加参数

gcc -o xxx.c xxxx -lmysqlclient

ok,编译顺利完成~

问题3:查看数据库连接出错的原因

代码写好了,能编译了,死活连不上数据库呀,不知道咋查是哪的错误呀。

还好不经意到了别人代码里的mysql_error()

就添上一句 printf("%s\n",mysql_error(conn)); //conn是数据库的连接句柄指针,MYSQL *conn ,ok了

看来没事还得多翻翻MySQL的C接口~

说正题吧...这是个及其纠结的问题

问题4:mysql_error返回的错误提示是Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

感觉是个常见的问题,继续百度.

发现大多帖子内容都一样哇...突然觉得网上这种冗余实在太多了,浪费存储维护成本和查找人的时间精力.....

找到一个看起来比较靠谱的帖子

(问题解决后看到个帖子貌似也解决了,不过我没有再试了,

还是说说过程吧

先按刚说的比较靠谱的帖子里,一直到方案5(不再赘述)都没解决问题,比较拙计. 又去看了别的帖子,像什么提升/var/lib/mysql整个文件夹权限各种招数均被无懈掉了0.0,毫无效果。

(其中的方案3被我忽略了,当时不知道max_connections=1000是啥,想当然的跳过了。

后来查了下,MySQL的max_connections参数用来设置最大连接(用户)数。每个连接MySQL的用户均算作一个连接,max_connections的默认值为100。

在配置文件my.cnf中设置max_connections的值

打开MySQL配置文件my.cnf

找到max_connections一行,修改为(如果没有,则自己添加),

max_connections = 1000

上面的1000即该参数的值。

实时(临时)修改此参数的值

首先登陆mysql,执行如下命令:

[root@www ~]# mysql -uroot -p

查看当前的Max_connections参数值:

mysql> SELECT @@MAX_CONNECTIONS AS 'Max Connections';

设置该参数的值:

mysql> set GLOBAL max_connections=1000;

(注意上面命令的大小写)

修改完成后实时生效,无需重启MySQL。

)

瞎整半天- -,没有解决

还是回到最初的那个帖子,好像还没看完呢,毕竟也感觉很靠谱

然后看到帖子后面附了一篇文章,按这文章改依然没有解决,不过值得注意的是我的user表里User项为root的不止localhost和localhost.localdomain,总之没解决,无限烦躁ing

就在觉得无计可施的时候,看到这帖子之前被我默默屏蔽了几行!!!果然不能想当然啊!!!

ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock

这是what ???

啊对 我系统里就没有/tmp/mysql.sock

执行这个软连接命令就ok了

我也不想再说啥了

-------

转别人帖子里的一段值得注意的东西:

ll /var/lib/mysql/mysql.sock

看到的属性是:

srwxrwxrwx 1 mysql mysql 0 11-21 14:39 /var/lib/mysql/mysql.sock

这 个属性引起了我的注意,档案类型标志是s,还真没去了解过这样的类型,到鸟哥的私房菜去找了一下,原来,这个是资料接口档,用我们大陆说的习惯应该是套接字文件(sockets),这种文件一般用在网络上的资料套接,mysqld守护进程生成了这个文件,其他与mysql相关的程序想使用mysql,估计 就是通过这个文件了。

这种特殊文件即使是最高权限的root用户,也是不能查看不能编辑的,有点像档案标志是p的管道文件。

就这些吧~~写的好累

都是前车之鉴

不要就一个简单的问题笑话菜鸟,因为我们真的不懂,但我们在进步的路上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值