文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL 8.0给开发方向带来的一些困扰

2024-12-03 19:13

关注

 MySQL 8.0的特性可谓强大,有一种集中火力的感觉,从整体的架构设计到功能和参数,可圈可点。

不过我今天从开发的角度来说一下困扰,毕竟那么新,那么强大,所谓的无缝,平滑还是需要经过全面测试,不能浮于纸面。

1:密码策略插件

MySQL 8.0开始将caching_sha2_password作为默认的身份验证插件。如果升级了数据库至8.0版本,对应用程序jdbc驱动兼容性不友好,让应用程序跑起来最快的方法需要将默认的caching_sha2_password改为之前的mysql_native_password。

比如:

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

也可以在参数中进行设置,修改my.cnf,重启服务即可生效:

  1. 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会有如下的变化:

  1. String Url="jdbc:mysql://211.159.xxx:33071/maxwell_test?useUnicode=true&characterEncoding=utf-8"

需要调整为如下的格式:

  1. String Url="jdbc:mysql://211.159.xxx:33071/maxwell_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&&serverTimezone=GMT"

相应的加载驱动程序则需要

  1. Class.forName("com.mysql.jdbc.Driver"); 

修改为:

  1. Class.forName("com.mysql.cj.jdbc.Driver"); 

3.整数类型的长度警告

比如下面的表结构,通过workbench等工具导出来格式都差不多,但是在8.0里面执行的时候会报警。

  1. CREATE TABLE `data_payment_history_test` ( 
  2.   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID'
  3.   `pid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID'
  4. 。。。 
  5.   `cdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
  6.   。。。 
  7.   PRIMARY KEY (`id`), 
  8.   KEY `idx_credit_overdraw_history__pid` (`pid`) 
  9. ) 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位的版本。

本文转载自微信公众号「杨建荣的学习笔记」,可以通过以下二维码关注。转载本文请联系杨建荣的学习笔记公众号。

 

来源:杨建荣的学习笔记内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯