MySQL8。0给开发方向带来的一些困扰
MySQL 8.0的特性可谓强大,有一种集中火力的感觉,从整体的架构设计到功能和参数,可圈可点。
不过我今天从开发的角度来说一下困扰,毕竟那么新,那么强大,所谓的无缝,平滑还是需要经过全面测试,不能浮于纸面。
1:密码策略插件
MySQL 8.0开始将caching_sha2_password作为默认的身份验证插件。如果升级了数据库至8.0版本,对应用程序jdbc驱动兼容性不友好,让应用程序跑起来最快的方法需要将默认的caching_sha2_password改为之前的mysql_native_password。
比如:
ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "password";
也可以在参数中进行设置,修改my.cnf,重启服务即可生效:
default_authentication_plugin=mysql_native_password
2.JDBC驱动变更
如果从MySQL5.5升级到5.7,那么驱动的事情不用担心,但是到了8.0,JDBC的驱动就需要格外注意了,否则很可能有如下的错误。
Loading class `com.mysql.jdbc.Driver". This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver". The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
对于JDBC的url会有如下的变化:
String Url="jdbc:mysql://211.159.xxx:33071/maxwell_test?useUnicode=true&characterEncoding=utf-8";
需要调整为如下的格式:
String Url="jdbc:mysql://211.159.xxx:33071/maxwell_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&&serverTimezone=GMT";
相应的加载驱动程序则需要
Class.forName("com.mysql.jdbc.Driver");
修改为:
Class.forName("com.mysql.cj.jdbc.Driver");
3.整数类型的长度警告
比如下面的表结构,通过workbench等工具导出来格式都差不多,但是在8.0里面执行的时候会报警。
CREATE TABLE `data_payment_history_test` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT "自增ID",
`pid` int(11) unsigned NOT NULL DEFAULT "0" COMMENT "用户ID",
…
`cdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",
…
PRIMARY KEY (`id`),
KEY `idx_credit_overdraw_history__pid` (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT="支付记录";
这里主要涉及两个警告,一个是整数类型的长度警告,另外一个是字符集警告,
展开来说,整数类型的长度警告信息为:Integer display width is deprecated and will be removed in a future,意思是int(11)这种写法已经过时了,应该直接写int,bigint
而字符集配置,在MySQL8.0里面默认是utf8mb4,如果我们手工写了utf8类型,会提示:"utf8" is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
当然如果你设置的全局字符集是utf8,则无警告的情况字符集仍然为utf8.
4.windows安装版
windows安装版本一直提供的是32位的,这个是个历史遗留问题,如果有些同学为了方便,直接点点点,可能把线上环境部署成32位就尴尬了,oracle的windows版本路子相反,已经很早就直接舍弃了32位的版本。
还有一波吐槽的点,容我整理下,继续发送,也欢迎留言补充。
想带孩子去电影院看电影,这3个问题没考虑好,还是在家看电视吧全职宝妈美伢太太今天就带着可爱的小新去电影院看那部她心仪已久的片子,可是终究状况百出没有看到最后。为什么美伢太太带小新去看电影没有看到最后呢?个人觉得有以下3个原因。1选择影片不适
那个上过变形记,16岁了吃饭还得喂的刘思琦,如今怎么样了?文文儿当了父母之后,最操心的就是孩子的教育。作为育儿编辑,时常在后台看到有人问我家孩子已经十岁了,说话顶撞人,不好好学习,想改还来得及吗?要么就是孩子已经17了,生活不会自理,身上
读不能承受的生命之轻不能承受的生命之轻是作家米兰昆德拉写的一部小说,描写了外科医生托马斯与特蕾莎萨比娜之间的感情生活,但它并不仅仅是一个男人和两个女人的三角性爱故事,它还是一部哲理小说,诠释了作者对人
女儿刚大学毕业就远嫁,妈妈决定生二胎,女儿大闹要断绝关系文文儿前几天后台收到一位宝妈的投稿,开头就是女儿大学刚毕业就远嫁,我决定生二胎,女儿大闹要和我断绝关系。宝妈在投稿里说当初头胎是女儿,周围人都劝再生一个,我和老公坚持认为一个女儿培
苏北农村这家人一起吃饭干活的场景,为何瞬间俘获大家的心?图文红艳你有多长时间没有和家人聚在一起说话拉呱了?你有多久没和父母兄弟姐妹坐在一起,说说自己在外的生活和奋斗的故事了?不管我们混得如何,日子怎样,但每逢想起过去和亲人们一起的点点滴
成年人的感情,都是有保质期的作者妈小咪图片来自网络,如有侵权请联系删图问世间情为何物,只教人生死相许。在感情的世界里,许多人为之癫狂,为之落寞。有的人,在感情的世界里,行走摸索了一辈子,却不知感情到底为何物。
在郑州生活太难了,你在吗?病例又增加了,宝妈送快递也受影响啦!宝妈见大家都开始备货居家了!宝妈下班也去了菜市场,西红柿4元每斤,黄瓜6元每斤,豆角5元每斤,西瓜1。3元每斤,葡萄10元3斤,大肉18元每斤,
偷偷爱着你的人,微信上会留下这几种痕迹点击上方蓝字关注,每天和你一起剖析人性与情感。接儿子放学时,看到他拉着一个小姑娘的手说我喜欢你,我们做好朋友吧。小姑娘对儿子使眼色,小家伙似乎感觉到妈妈的味道在身后,脸红地看着我。
通常被认为仅在中国国内可以瞧见的6种商品如今的中国制造非常强大,中国制造在全球的占比已经达到了大约30。可以说,整个世界都已经离不开中国制造的商品。当许多外国人在平日里逛商场的时候,随意举起一个商品,就可以在背部看见所标
绝育后,后悔了怎么办?很多人都问我做了绝育后,有朝一日,我后悔了怎么办?还能补救吗?绝育术分为男性绝育术,也就是输精管结扎术。女性绝育术,也就是输卵管结扎术。男性通过结扎输精管,可以正常排出jingye
麻醉到底会不会让人变傻小李,40岁,年前因为子宫肌瘤,在医院全身麻醉腹腔镜下做了肌瘤剔除术。手术结束这半年来,总是感觉记忆力下降了。经常丢三落四,刚刚做过的事,转眼间就忘了。其实不光是她,很多患者跟我反