记录一下使用JDBC过程中遇到的坑

1. JDBC连接MySQL报错Communications link failure

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. 已经创建新用户,并授权相关操作权限,可从任意主机访问MySQL
  2. 问题的原因在于,MySQL默认监听localhost:3306,因此无法远程连接
  3. 解决办法:
    ubuntu18.04 系统中
  • 查看3306端口的监听情况
netstat -an | grep 3306

发现监听127.0.0.1:3306

  • 修改MySQL配置
vim /etc/mysql/mysql.conf.d/mysqld.cnf
  • 找到:
bind-address=127.0.0.1
  • 将其修改为:
bind-address=0.0.0.0
  • 记得重启MySQL服务
service mysql restart

2. 数据库中文乱码问题

若已知要存储的数据中需要有中文,最好创建数据库的时候,就把默认字符集设置为utf8

CREATE DATABASE 数据库名 CHARACTER SET utf8;
# 更改数据库默认字符集
alter database 数据库名 default character set utf8;

设置了之后,使用JDBC提交插入语句时,发现执行的结果仍然是中文乱码或者问号,需要在连接数据库的URL中更改,如下:

jdbc:mysql://IP地址:3306/数据库名?useUnicode=true&characterEncoding=utf8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值