IntelliJ IDEA配置MySQL出现的连接问题

**IntelliJ IDEA配置MySQL出现的连接问题

前言

   由于本学期开始数据库和Java的学习,我便开始下载IntelliJ IDEA。之所以会选择这款编辑器,
   一是因为它的功能强大,二就是它可以与多种数据库接,直接可以在IntelliJ IDEA上面编写SQL
   指令。在我看来是很方便的。

经过

     当我按照网上的方法一步步下载,安装,破解IntelliJ IDEA和MySQL。虽然中间有一些
     问题,但最终还是把IntelliJ IDEA和MySQL安装好了。但是却在IntelliJ IDEA连接MySQL
     之后出现了问题。

在这里插入图片描述
上网查的结果大都是说时区设置错误;
在这里插入图片描述
于是在MySQL中改动时区设置,结果还是显示连接不上。一个人从早上改到晚上,结果还是不行。 一切没有办法的时候,我找到我的班主任。班主任很耐心帮我解决了这个问题。

结果

  问题有两个:
  • 连接的数据库,事先并没有建立。
    在这里插入图片描述
    而这个问题连接检测并不会直接提示出来,显示问题是时区配置问题。一直使我误以为是时区设置错误。出现这个问题的原因是:我不熟悉IntelliJ IDEA的操作,错误的以为Database后面填的是自己要建立数据库名,实际上却是IntelliJ IDEA要连接的数据库名。
  • 时区没有设置(serverTimezone为空)
    当我改为一个已经建立的数据库时,依然出现和开始相同的问题。
    在这里插入图片描述于是又在MySQL中改动时区设置,结果还是显示连接不上。
    解决办法:
    在Advanced下的serverTimezone设置成Asia/Shanghai
    在这里插入图片描述最终连接成功
    在这里插入图片描述
    在我以为这事终于可以放下的时候,班主任老师告诉我解决问题不能局限于表面,连接正常只是表面上这个问题解决了。但是为什么这样就能连号,换成别的时区会有什么影响。于是让我做了一个测试。
    1.将idea数据库连接serverTimezone项还原为初始状态(空),测试数据库连接
    2.确认MySQL使用的时区
    3.如果不能确认,手动将MySQL time_zone设置为北京时间(+08:00),测试数据库连接
    4.将MySQL time_zone设置为UTC(+00:00),测试数据库连接
    以上测试可得到何种结论?
    5.将idea数据库连接serverTimezone项设置为UTC,测试数据库连接
    6.将MySQL time_zone设置为北京时间(+08:00),测试数据库连接
    7.将idea数据库连接serverTimezone项设置为Asia/Shanghai,测试数据库连接
    8.将idea数据库连接serverTimezone项设置为任意时区(http://www.360doc.com/content/19/0806/11/39194723_853278521.shtml),测试数据库连接
    以上测试可得到何种结论?
    9.将idea数据库连接serverTimezone项设置为UTC,将MySQL time_zone设置为北京时间(+08:00),完成数据库写入(带插入时间)
    查询数据,有何现象?
    这一系列的测试做下,我还是有点懵。尤其是在MySQL中的操作,我常常怀疑自己做的到底对不对。
    班主任老师又给我耐心的讲了这个测试。
    得到的结果是:
    serverTimezone项若为空,连接就会失败。原因就是
    https://www.cnblogs.com/zhuitian/p/12436300.html
    serverTimezone项只要不为空,无论是否与MySQL时区相匹配,连接都可以成功。
    但是不使用Asia/Shanghai时间和不把MySQL中的时区(+8:00)会使得数据库返回的时间与当前时间相差8小时。
    将idea数据库连接serverTimezone项设置为UTC,将MySQL time_zone设置为北京时间(+08:00),完成数据库写入。

数据库创建一个表,对值进行修改

CREATE TABLE class_member(
id INT(2) AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL UNIQUE,
age TINYINT(2) NOT NULL,
CreateTime datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
modify_time timestamp 
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO class_member(id, name, age)
VALUES ('101','刘丽','13'),
       ('102','王一','14'),
       ('103','王二','15'),
       ('104','王三','16'),
       ('105','刘二','14'),
       ('106','李东','15');
SELECT *
FROM class_member;
update class_member set age = 16 where name = '王一';
SELECT *
FROM class_member;

SELECT *
FROM class_member;
SELECT *
FROM class_member;
update class_member set age = 16 where name = '王二';
INSERT INTO class_member(id,name,age)VALUES ('107','张小明','17');
show variables like '%time_zone%';
set time_zone = '+8:00';
SELECT *
FROM class_member;
update class_member set age = 17 where name = '王一';

在这里插入图片描述
前面是北京时间,后面是UTC。
至此这个问题终于告一段落。

补充:
1、当字段定义为timestamp,表示该字段在插入和更新时都不会自动设置为当前时间。他会显示为NULL,并且修改数据后返回的时间依然是NULL。
2、当字段定义为timestamp DEFAULT CURRENT_TIMESTAMP,表示该字段仅在插入且未指定值时被赋予当前时间,再更新时且未指定值时不做修改。因此这个可以用来显示表的创建时间。就是首次创建的时间。
3、当字段定义为timestamp ON UPDATE CURRENT_TIMESTAMP,表示该字段在插入且未指定值时被赋值为"0000-00-00 00:00:00",在更新且未指定值时更新为当前时间。
4、当字段定义为timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,表示该字段在插入或更新时未指定值,则被赋值为当前时间。这个时间才可以捉到修改数据及时得到修改时间。
执行一次数据修改。发现果然如此,DEFAULT CURRENT_TIMESTAMP定义的时间未变,ON UPDATE CURRENT_TIMESTAMP定义的时间发生改变。

文档:关于在IntelliJ IDEA配置MySQL出现的连…
链接:
[1]http://note.youdao.com/noteshareid=0155a791ecb9e6a44d2ea615770bbbb7sub=CBF383EFF1CA4AA69DA54D2A2B7431AE
[2]https://www.cnblogs.com/zhuitian/p/12436300.html
2020/03/14 01:04

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值