环境:CentOS 6.2
问题描述:
MySQL返回错误提示为: Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)
项目中需要实现代码导出MySQL数据库中表结构的功能,于是我先单独写这个功能,然后整合上去,单独的小程序可以了,但是整合上去却无法连接MySQL数据库,返回的错误码和提示如标题。
问题分析:
这个问题出现的奇怪之处是,单独的小程序可以使用,但是整合到项目中却不可以使用,而且错误提示是/tmp/mysql.sock不可用,于是我使用ls查看,结果发现该路径不存在,也就说这个路径指向的套接字根本不存在,而/usr/lib/mysql/mysql.sock却是存在的。但是问题回到原点,为什么单独的小程序可以呢?
原因就在于单独的小程序使用的我自己虚拟机上安装的MySQL的库以及头文件,然而,项目中却是包含了对MySQL封装后的头文件,而且Makefile文件写的比较复杂,我是小菜,所以看不太懂,但是根据情况分析得知我的这段代码在项目中使用的库肯定不是我自己虚拟机的MySQL库,因此,它对sock的路径指向是不对的,也就是说单独的小程序的sock是/usr/lib/mysql/mysql.sock,因为它是存在的,所以可以运行,然而项目中由于使用的库不一样,所以sock的路径是/tmp/mysql.sock,所以它是无法连接数据库的。
解决方法:
遇到问题,我也是首先在网上搜索,参考的这位哥们的答案解决的,我使用的是添加链接的方法,即$>ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
总结:
其实当我们遇到问题的时候如果仔细的去分析问题的出错原因,然后根据自己掌握的知识去解决的话,我想还是可以搞定的,但是可能人都是有惰性的,我也是,一般遇到问题就会先到网上去搜索,然后挨个的试试,然后问题不知道是怎么发生的,解决了也不知道是怎么解决的,如此一次一次,遇到问题仍然是百度、谷歌。
其实我倒不算是说这样去搜问题有什么不好,毕竟大家都是这么一步步走过来的,在我们刚学编程的时候,估计都听老师或者前辈说过,要多使用搜索引擎,但是当我走到我现在这个阶段,发现,搜索有时候其实很浪费时间,好多问题的解决办法都是抄来抄去(我也经常这么干),更有甚者,有些答案连去试验都没有就转走,这样对于下面遇到这个问题人来说就是灾难,因为不管怎么搜,总是那么几个答案,而且打开来看根本就是一模一样(我就经常遇到这样的情况),连自己遇到问题时的开发环境都不带附加的。
我想说的是我们是应该多使用搜索引擎,毕竟在开始的阶段,它是最好的老师。但是还是不要停止使用我们的大脑,它才是世界上最快、最精密的计算机,不要让它资源浪费,如果只是一味的照着网上的答案去”解决问题“,而不思考,那么你只能一直做”码“农了。
曾经一位前辈告诉过我一句话:当你无法从网上找到你需要的答案,而必须去书上找时,你就真正进入编程的门了。
思考一个问题的解决过程