开发中遇到的问题&解决方案(十一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 前天不是开工嘛,然后刚刚到公司前端说测试环境好像挂了,开工就直接王炸了,找了运维,运维说服务器过年关机了回来发现有个配件坏了,暂时修不好。那我就本地部署一套当测试环境用,我同步了一份生产库到本地,然后问题就来了,之前好好的功能全部出现了问题,因为年前有需求改动,debug了好几遍代码也没有查出问题,然后突然想到MySQL版本不对。

微信截图_20220531133417.png

「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战

前言

前天不是开工嘛,然后刚刚到公司前端说测试环境好像挂了,开工就直接王炸了,找了运维,运维说服务器过年关机了回来发现有个配件坏了,暂时修不好。那我就本地部署一套当测试环境用,我同步了一份生产库到本地,然后问题就来了,之前好好的功能全部出现了问题,因为年前有需求改动,debug了好几遍代码也没有查出问题,然后突然想到MySQL版本不对。


一.问题所在:版本引起的JSON函数导致,本地MySql版本8.0.2,生产环境版本5.0.3


1.先了解一下MySql里的JSON函数


1)JSON_EXTRACT, 使用形式JSON_EXTRACT(json,json_path),从json里提取内容,第一位是存储在数据库里json字符串,第二位是想要提取的内容key,就像在java里从JsonObject里获取相应的值一样,key(value)的形式,而问题就出自这里,而一般单表不会出现问题,出现问题一般是表连接查询的时候,作为取值的key对应的value与其他表做了关联。

先看看简单示例,熟悉一下用法,从[10,20,[30,40]]的json字符串里获取第2个元素,注意这里是从0开始

执行结果:

微信截图_20220531143208.png

2.主表和关联表的字段设计以及执行结果


1)主表

微信截图_20220531143243.png

2)关联表微信截图_20220531143422.png

3)执行sql

sql_1:select JSON_EXTRACT(json.json_str,"$.fileList") as colum from main_test mian LEFT JOIN json_test json on mian.id=json.extend_id

执行结果:

微信截图_20220531143321.png

4)问题出现点,如果MySql版本是5.0.3的那么JSON_EXTRACT后是取出来的值是正常的,但是如果是8.0.2的取出来的值是带“”的,如果取的值作为表连接on后面的其一,那么数据肯定查询不出来


5)针对4)的问题,如果MySql版本是8以上的,使用JSON_EXTRACT时正确的使用方式是 replace(JSON_EXTRACT(json,json_path),'"','')替换掉双引号


小结

针对日常开发中出现代码不动,环境变动产生的bug,特别要注意版本问题,我也是多次的强调过这个问题,但是有时候还是会忘记,还是得多加深记忆才行,之前java版本升级到8,做分布式项目时组与组之间dubbo版本的不同这些都是版本引起的问题。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11月前
|
新能源
会后分享 | 精选十二:整车性能开发解决方案
本文由上海安世亚太公司汽车行业技术经理章敏先生在新能源汽车研讨会上所发表的演讲,此内容详细地讲解了整车性能开发解决方案。
会后分享 | 精选十二:整车性能开发解决方案
|
运维 监控 前端开发
带团队后的日常思考(十一)
带团队后的日常思考(十一)
|
设计模式 Java API
Android组件化开发(七)--从零开始教你分析项目需求并实现
前面几篇文章我们封装了几个组件化功能组件:包括:**网络请求组件,图片加载请求组件,应用保活组件,音乐播放组件封装。** > 每个组件都可以直接拿到自己项目中使用,当然还需根据自己项目要求进行优化。
|
测试技术 Python
【第五篇-完结篇】XiaoZaiMultiAutoAiDevices之改造扩展
在前面系列文章中有讲到,使用configparser,ini格式的文件作为配置文件,在新增或者删除其中的值时,会丢失所有注释,所以在框架源码注释中我有写到,如果对这方面比较介意或者是有需求的话,可以进行更改配置文件。
114 0
|
测试技术 Python
曲鸟全栈UI自动化教学(八):框架代码讲解和进一步优化
曲鸟全栈UI自动化教学(八):框架代码讲解和进一步优化
630 0
曲鸟全栈UI自动化教学(八):框架代码讲解和进一步优化
|
消息中间件 前端开发 Java
开发中遇到的问题&解决方案(十二)
由于之前做过贷款平台和电商平台,所以对于订单这个东西十分的敏感,有段时间有点疯狂的喜欢逮着京东、淘宝、拼多多的订单页看,思考别人在做的购物车和订单这块是怎么实现的,尝试找找Bug什么的,后面出去面试别人看我的项目也会问一些关于订单如何设计和实现的问题,所以感觉这个东西还是有讲的必要,下面进入主题。
201 0
开发中遇到的问题&解决方案(十二)
|
JSON 资源调度 前端开发
从0到1教你搭建前端团队的组件系统(高级进阶必备)
随着vue/react这类以数据驱动为主的web框架的不断完善和壮大,越来越多的前端团队开始着手搭建内部的组件库。虽然目前市面上已经有很多功能强大且完善的组件库供我们使用,比如基于react的开源组件库ant-design,material,又比如基于vue的开源组件库elementUI,iView等。
784 0
|
JSON 前端开发 API
C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)
原文:C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD) 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.
990 0