【自学java笔记#第四十一天#】mabatis day03 bug记录
1、2003 can't connect to mysql 10051
问题简述:虚拟机无法连接到网络,导致Navicat无法远程连接到mysql数据
解决方案:将虚拟机的网络适配器更改为-->其他模式(NAT模式等)-->再改回桥接模式
不用重启,立马解决问题

2、进入虚拟机端的数据库,报错:access denied for user root@localhost
解决办法:不用命令:mysql -u root -p;
直接用命令:mysql -u -p成功进入数据库:

3、重新运行昨天已测试完成的程序,eclipse又报错了:
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
尝试了网友们给出的各种建议:
①更改mysql数据库的wait_timeout和interactive_timeout两个变量的值;
ysql> show global variables like 'wait_timeout'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | wait_timeout | 28800 | +---------------+-------+ 1 row in set (0.00 sec) mysql> set wait_timeout=1814400; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'wait_timeout'; +---------------+---------+ | Variable_name | Value | +---------------+---------+ | wait_timeout | 1814400 | +---------------+---------+ 1 row in set (0.02 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'interactive_timeout'; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 2 Current database: *** NONE *** +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | interactive_timeout | 28800 | +---------------------+-------+ 1 row in set (0.00 sec) mysql> set interactive_timeout=604800; Query OK, 0 rows affected (0.00 sec) mysql> set global interactive_timeout=604800; Query OK, 0 rows affected (0.00 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'interactive_timeout'; +---------------------+--------+ | Variable_name | Value | +---------------------+--------+ | interactive_timeout | 604800 | +---------------------+--------+ 1 row in set (0.00 sec)
②重启mysql数据库;
③
在jdbc连接url的配置中,你可以附上“autoReconnect=true”,但这仅对mysql5以前的版本起作用。
④
我们可以将数据库连接池的 validateQuery、testOnBorrow(testOnReturn)打开,这样在 每次从连接池中取出且准备使用之前(或者使用完且在放入连接池之前)先测试下当前使用是否好用,如果不好用,系统就会自动destory掉。
或者testWhileIdle项是设置是否让后台线程定时检查连接池中连接的可用性。
但后两种方法,一个因为版本不符(我的mysql版本是5.1.46),另一个eclipse直接报错说不能设置这样的值而作罢。
完成以上所有的这些步骤之后,还是报最开始一样的错误。
气急攻心的我直接用这个项目的所有数据又新建了另一个项目,程序能正常跑起来。我回过头来再运行这个项目时,发现也能跑起来了。
具体是什么原理我暂时还不清楚,看明天的课程是否会讲解吧!
浙公网安备 33010602011771号