- 连接的数据库,事先并没有建立。
- 时区没有设置(serverTimezone为空)
- serverTimezone项若为空,连接就会失败。原因就是
- serverTimezone项只要不为空,无论是否与MySQL时区相匹配,连接都可以成功。
- 但是不使用Asia/Shanghai时间和不把MySQL中的时区(+8:00)会使得数据库返回的时间与当前时间相差8小时。
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 = '王一';
前面是北京时间,后面是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