1.首先我们在eclipse中连接数据库的过程中,遇到的问题就是如上图。开始百度Communications link failure 这几个关键字。得到的结果基本上就是基本配置参数wait_timeout,interactive_timeout,bind-address等这几个参数有问题,因此我们的第一反应是找到配置文件进行配置。
2.要配置就要找到配置文件,我们发现在mysql的安装目录里没有找到配置文件。百度以后发现Mac下的mysql没有配置文件,要自己到/etc的目录下自己创建,这是奇葩的第一个地方。
3.在历尽磨难创建了配置文件以后,然并卵,并没有什么反应。这我们就很为难了。增加时间值,我们也增加了。为什么一点反应都没有呢?其中还有个插曲,我们在终端里进行对参数进行配置,然后发现重新启动下mysql就返回默认值,也是一个奇葩的地方。
4.挠头中
5.继续百度,发现有的需要在URL中添加参数,又如获至宝,发现还是没用。
6.Mac下奇特的地方之二,因为下载了一个数据库管理软件Sequel Pro,在这个的第二种连接方式Socket连接是可以访问数据库内容的。这个软件还有Standard连接,这个连接是不能访问数据库的。Standard和Socket连接的区别就是需要配置host和port,其实在此我们就应该想到是这两个参数存在问题,当时也确实验证了下。mysqld --verbose --help | grep 3306 ,发现确实有一条记录。而且大多数情况下,默认端口都是3306.这让我们不怎么想这个点了。还有一点就是,在终端我们可以对数据库进行访问,通过数据库密码,可以访问表的内容。
7.通过第6点,让我们深深相信数据库应该是没问题的,其他地方都是可以访问的,为什么通过eclipse就不能访问呢?肯定是eclipse的程序出问题了。于是就想可能是公司的jar包有问题,公司对原来的jar进行封装,涉及到连接池。网上很多人说,mysql时间超时断开连接,连接池还默认原来的链接就会出问题。于是我们写了一个简单的测试程序,只用官方的mysql-connector-java-5.1.40-bin.jar然而发现问题并不再驱动上。
8.eclispe连接不上mysql,必定又一个出问题了。我们又返回到是不是程序出错了。我们仔细对比以后发现,加载驱动,获得连接,并没有什么问题。
9.挠头中
10.都快已经放弃了,已经准备重装mysql了。有两点忧虑,一是觉得麻烦,还要重新导入数据。二是重新安装并不一定解决问题。
11.同事尝试性的 ps -ef | grep mysql 查看正在运行的进程,发现mysql的端口竟然是3307.小心翼翼改成3307以后发现竟然可以了。(和同事一天都纠结在这个问题中,万幸解决了)
12.百度下才知道Mac下mysql默认的端口号是3307.石化中……
问题解决的过程如上所述十分艰辛,耗费一天的时光,在最后我们也认为这是值得的,因为对很多东西加深了认识。
在几个星期之前,我就遇到这个问题了。当时觉得解决不掉,毫无头绪。因为家里有台式机,公司有电脑就对笔记本不是特别需求就一直没有解决。直到今天才下定决心解决之。面对困难,不要畏惧,要迎头面对。这应该是我学会的第一件事了。在决心面前,所有问题都是纸老虎。学到的第二点就是谦虚学习和与他人合作,别人身上必定有你需要学习的东西,几个星期之前,我一个人研究以失败结束,这一次我和同事一直在讨论这个问题,很感谢他。最后还是他解决了这个问题。其实我也想过是端口的问题,惯性思维,自己安装的mysql并咩有更改设置呀应该是3306呀,让我错过了这个机会。