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

前言 由于本学期开始数据库和Java的学习,我便开始下载IntelliJ IDEA。之所以会选择这款编辑器,一是因为它的功能强大,二就是它可以与多种数据库接,直接可以在IntelliJ IDEA上面编写SQL指令。在我看来是很方便的。 经过 当我按照网上的方法一步步下载,安装,破解IntelliJ IDEA和MySQL。虽然中间有一些问题,但最终还是把IntelliJ IDEA和MySQL安装好了。但是却在 IntelliJ IDEA连接MySQL之后出现了问题。 IntelliJ IDEA配置MySQL出现的连接问题 上网查的结果大都是说时区设置错误; IntelliJ IDEA配置MySQL出现的连接问题 于是在MySQL中改动时区设置,结果还是显示连接不上。一个人从早上改到晚上,结果还是不行。 一切没有办法的时候,我找到我的班主任。班主任很耐心帮我解决了这个问题。 结果 问题有两个:
  • 连接的数据库,事先并没有建立。
IntelliJ IDEA配置MySQL出现的连接问题 而这个问题连接检测并不会直接提示出来,显示问题是时区配置问题。一直使我误以为是时区设置错误。出现这个问题的原因是:我不熟悉IntelliJ IDEA的操作,错误的以为Database后面填的是自己要建立数据库名,实际上却是IntelliJ IDEA要连接的数据库名。
  • 时区没有设置(serverTimezone为空)
当我改为一个已经建立的数据库时,依然出现和开始相同的问题。 IntelliJ IDEA配置MySQL出现的连接问题 于是又在MySQL中改动时区设置,结果还是显示连接不上。 解决办法: 在Advanced下的serverTimezone设置成Asia/Shanghai IntelliJ IDEA配置MySQL出现的连接问题 最终连接成功 IntelliJ IDEA配置MySQL出现的连接问题   在我以为这事终于可以放下的时候,班主任老师告诉我解决问题不能局限于表面,连接正常只是表面上这个问题解决了。但是为什么这样就能连号,换成别的时区会有什么影响。于是让我做了一个测试。 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项若为空,连接就会失败。原因就是
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),完成数据库写入  
 1 CREATE TABLE class_member(
 2 id INT(2) AUTO_INCREMENT PRIMARY KEY,
 3 name VARCHAR(20) NOT NULL UNIQUE,
 4 age TINYINT(2) NOT NULL,
 5 CreateTime datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 6 modify_time timestamp 
 7 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
 8 );
 9 INSERT INTO class_member(id, name, age)
10 VALUES ('101','刘丽','13'),
11        ('102','王一','14'),
12        ('103','王二','15'),
13        ('104','王三','16'),
14        ('105','刘二','14'),
15        ('106','李东','15');
16 SELECT *
17 FROM class_member;
18 update class_member set age = 16 where name = '王一';
19 SELECT *
20 FROM class_member;
21 
22 SELECT *
23 FROM class_member;
24 SELECT *
25 FROM class_member;
26 update class_member set age = 16 where name = '王二';
27 INSERT INTO class_member(id,name,age)VALUES ('107','张小明','17');
28 show variables like '%time_zone%';
29 set time_zone = '+8:00';
30 SELECT *
31 FROM class_member;
32 update class_member set age = 17 where name = '王一';

 

  IntelliJ IDEA配置MySQL出现的连接问题 前面是北京时间,后面是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出现的连... 链接:http://note.youdao.com/noteshareid=0155a791ecb9e6a44d2ea615770bbbb7&sub=CBF383EFF1CA4AA69DA54D2A2B7431AE 2020/03/14 01:04
上一篇:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ 解决方案


下一篇:redis之位图