大家好,又见面了,我是你们的朋友全栈君。
目录
一、前言
在学习AndroidAndroid入门案例(二)——JDBC连接MySql数据库使用jdbc方式连接本地数据库时报错:
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.
网上百度方案绝大部分有:
1.网上说是出现这个问题是因为超时,数据库连接(java.sql.Connection)连接关闭,因此可以设置连接最长时间,wait_timeout的默认最长时间是28800秒,也就是8小时时间
以root打开该文件:sudo gedit /etc/mysql/my.cnf
再末尾添加:
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
保存重启生效
但是并没有解决我的问题, 各位可以试一下是否可以 解决你们的问题,如若不行,再看下文
二、解决
1.如果访问的是本地数据库,localhost或者127.0.0.1的ip其实是不对的
连接数据库超时,可能是因为ip不对,网上使用jdbc连接数据库,有一部分数据库ip中为localhost或者127.0.0.1,刚开始我也是,结果一直报错,然后在测试类中却可以,运行安卓案例就不可以,问了师傅才明白,数据库是安装才本机上的,安卓程序运行访问的数据库ip地址是localhost,安卓程序是独立在Virtual Device中的,难道你虚拟手机中安装了数据库???
所以说,电脑和安卓虚拟机其实是两个ip地址,应该改为本机数据库地址,
- 可以在cmd中输入ipconfig查看Ipv4地址,换掉localhost 或者127.0.0.1
- 或者ip改为10.0.2.2,这是Android虚拟机的默认宿主IP地址
本人的到此还是有问题,所以接着下文!
2.如果访问的是远程数据库或者本地数据库还是连接失败,检查数据库是否公开权限
MySQL中root用户默认只能用于本地本机连接数据库,如果你的数据库没有公开过权限的话,默认是没有远程访问权限的
本人为了方便,新建了一个local用户,新建用户及授权操作如下:
1)进入数据库:mysql -u root -p密码
2)use mysql;
3)create user ‘userName’@’host’ identified by ‘password’;
- userName:创建数据库新用户的用户名
- host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost;如果想让该用户可以从任意远程主机登陆,可以使用通配符
%
- password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
4)grant all privileges on databaseName.tableName to ‘userName’@’host’;
- privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用all privileges
- databaseName:数据库名
- userName:指定需要赋予权限的用户
- tableName:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
- host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost;如果想让该用户可以从任意远程主机登陆,可以使用通配符%
现在连接数据库信息变为:
private static String driver = "com.mysql.jdbc.Driver";//MySQL 驱动
private static String url = "jdbc:mysql://ip:3306/dbname";//MYSQL数据库连接Url ip:数据库ip地址 dbname:连接的数据库名
private static String user = "local";//用户名
private static String password = "123456";//密码
终于OK了!!!
欢迎访问我的个人小站哦:我爱吃土豆
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152234.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...