MySQL 5.x版本升级到8.x版本系统后部分语句失效

MySQL8.x版本Druid.properties配置文件 MySQL8.x版本Druid.properties配置文件 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=30000 spring.datasource.maxEvictableIdleTimeMillis=180000 #驱动加载 driverClassName=com.mysql.jdbc.Driver #注册驱动 url=jdbc:mysql://localhost:3306/db9?useUnicode= 阅读详情

问题描述:

公司内部系统,随着业务的扩展、技术的优化,需要进行数据库配套升级,mysql5.2版本升级到8.0版本,升级完成后,系统使用异常,出现sql查询错误。经排查发现,mysql5.x版本使用的语句中的字段,在mysql8.0及以上版本,成为了数据库系统的关键字或保留字。

举例:

mysql 5.x

select system * from systeminfo;
#执行成功

mysql 8.x

select system *from systeminfo;
#执行失败,报错

解决方案:

对sql进行优化,将关键字或保留字段进行更换

信息来源 官网参考Link

参考内容截取:mysql5.x和8.x 关键字或保留字参考

9.3 Keywords and Reserved Words

Keywords are words that have significance in SQL. Certain keywords, such as SELECT, DELETE, or BIGINT, are reserved and require special treatment for use as identifiers such as table and column names. This may also be true for the names of built-in functions.

Nonreserved keywords are permitted as identifiers without quoting. Reserved words are permitted as identifiers if you quote them as described in Section 9.2, “Schema Object Names”:

BEGIN and END are keywords but not reserved, so their use as identifiers does not require quoting. INTERVAL is a reserved keyword and must be quoted to be used as an identifier:Exception: A word that follows a period in a qualified name must be an identifier, so it need not be quoted even if it is reserved:

Names of built-in functions are permitted as identifiers but may require care to be used as such. For example, COUNT is acceptable as a column name. However, by default, no whitespace is permitted in function invocations between the function name and the following ( character. This requirement enables the parser to distinguish whether the name is used in a function call or in nonfunction context. For further details on recognition of function names, see Section 9.2.5, “Function Name Parsing and Resolution”.

The INFORMATION_SCHEMA.KEYWORDS table lists the words considered keywords by MySQL and indicates whether they are reserved. See Section 26.3.17, “The INFORMATION_SCHEMA KEYWORDS Table”.

MySQL 8.0 Keywords and Reserved Words

The following list shows the keywords and reserved words in MySQL 8.0, along with changes to individual words from version to version. Reserved keywords are marked with (R). In addition, _FILENAME is reserved.

At some point, you might upgrade to a higher version, so it is a good idea to have a look at future reserved words, too. You can find these in the manuals that cover higher versions of MySQL. Most of the reserved words in the list are forbidden by standard SQL as column or table names (for example, GROUP). A few are reserved because MySQL needs them and uses a yacc parser.

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

A

  • ACCESSIBLE (R)
  • ACCOUNT
  • ACTION
  • ACTIVE; added in 8.0.14 (nonreserved)
  • ADD (R)
  • ADMIN; became nonreserved in 8.0.12
  • AFTER
  • AGAINST
  • AGGREGATE
  • ALGORITHM
  • ALL (R)
  • ALTER (R)
  • ALWAYS
  • ANALYSE; removed in 8.0.1
  • ANALYZE (R)
  • AND (R)
  • ANY
  • ARRAY; added in 8.0.17 (reserved); became nonreserved in 8.0.19
  • AS (R)
  • ASC (R)
  • ASCII
  • ASENSITIVE (R)
  • AT
  • ATTRIBUTE; added in 8.0.21 (nonreserved)
  • AUTHENTICATION; added in 8.0.27 (nonreserved)
  • AUTOEXTEND_SIZE
  • AUTO_INCREMENT
  • AVG
  • AVG_ROW_LENGTH

B

  • BACKUP
  • BEFORE (R)
  • BEGIN
  • BETWEEN (R)
  • BIGINT (R)
  • BINARY (R)
  • BINLOG
  • BIT
  • BLOB (R)
  • BLOCK
  • BOOL
  • BOOLEAN
  • BOTH (R)
  • BTREE
  • BUCKETS; added in 8.0.2 (nonreserved)
  • BY (R)
  • BYTE

C

MySQL高阶讲座之:`MySQL`的`Query Cache`:其在`MySQL` 8.0中被移除的深层原因。 下次再执行同样的查询,直接从缓存里拿结果,省去了分析SQL、访问数据、计算结果的步骤,速度提升那是杠杠的。在高并发的场景下,锁的争用会非常激烈,导致性能下降。我是今天的主讲人,咱们今天聊聊MySQL里曾经风光无限,但最终黯然退场的 Query Cache。这玩意儿啊,就像你辛辛苦苦做的缓存,结果发现不仅没加速,还拖慢了速度,最后只能忍痛割爱。下次再执行同样的查询,MySQL 直接从缓存里返回结果,速度嗖嗖的。在高并发的情况下,Query Cache 的全局锁会导致线程之间相互等待,降低了整体性能。 阅读详情

相关推荐

别再被网站风控了!手把手教你修改Chromium源码,实现TLS指纹随机化

本文详细介绍了如何通过修改Chromium源码实现TLS指纹随机化,有效规避网站风控。文章深入解析了TLS指纹(如JA3指纹)的工作原理,并提供了具体的源码修改步骤和编译方法,帮助开发者突破高级反爬技术。通过动态打乱加密套件顺序,实现每次请求生成不同的指纹,显著提升自动化工具的隐蔽性。

weixin_28712661的博客 404

MySQL5过渡到MySQL8问题解决方案【完美】

MySQL5过渡到MySQL8问题解决方案【完美】【纯Java+mysql8的图书管理系统

LeeChance的专栏 2853

【Bug已解决】Codex 报错 MCP client for context7 failed to start: program not found 解决方案

方案适用场景推荐指数改用绝对路径Windows 上最常见、最有效的解决方式⭐⭐⭐⭐⭐提前全局安装避免依赖 npx减少运行时网络下载的不确定性⭐⭐⭐⭐使用 .cmd 后缀Windows 平台快速尝试⭐⭐⭐⭐开启调试日志需要更精确定位失败原因⭐⭐⭐⭐统一封装启动脚本需要跨平台兼容多个 MCP 服务⭐⭐⭐报错的本质是Codex 启动 MCP 子进程时,无法正确定位配置文件中写的简写命令名对应的可执行文件,尤其容易发生在 Windows 平台上使用npx这类简写命令的场景。

一键难忘的博客 5768

mysql5升级mysql8无法通过jdbc连接的几个原因

1.useSSL未指定 2.时区未指定 3.导入到依赖不匹配 4.Driver不一致

weixin_45642669的博客 1854

mysql5.7升级mysql8.0需要注意事项

1. 安装mysql8.0时,默认是大小写敏感,需要通过设置lower_case_table_names=1,但是需要注意,需要在初始化的时候和my.cnf文件中均设置才生效。如果已经安装完数据库,在设置不生效。docker安装mysql需要在创建容器时通过配置参数设置。docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --lower_case_table_names=1 其他参数一样。 2. mys

哈利路亚的收藏夹 2013

mysql5.x升级mysql8.X之后数据库不支持“||“拼接字符串,替代函数contact踩坑过程

乍一看完了,查询没有问题,但是经过本人测试之后发现,concat函数拼接字符串的时候,里面只要有空值,整个数据拼接结果就是空的。里面如果organ_town_name这个是空,即便是其他有值,结果也是空。改造之后的函数,添加ifnull()函数,功能和oracle的nvl类似。例如:concat(

Jerry的博客 980

mysql my.ini

Mysql my.ini [client] #设置mysql客户端默认字符集 default-character-set=utf8 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 user = 'root' password = '123' [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录...

小人物的博客 1377

CentOS8系统下安装MySQL8.x遇到的坑

CentOS8系统下安装MySQL8.x遇到的坑 前言:我们知道在Linux环境下默认是区分大小写的,而MySQL在官方文档中明确表示了,一旦MySQL启动后,将无法再进行配置,只能进行重装,如果数据不重要倒是无所谓,但是如果有重要数据那是真的大坑。 如果启动之后再去更改/etc/my.cnf,那么重启MySQL就会出现如下错误: Job for mysqld.service failed be...

qq_38817391的博客 2846

mysql版本升级出现Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column错

mysql 升级版本出现experssion #2 ONLY_FULL_GROUP_BY错误问题解决

爱媳妇儿爱编程 1540

Gerrit | 重磅! 2.x 版本升级到 3.x 版本----转

2.x known bugs重大问题不一一列举,这里仅仅是举几个例子:问题传送门:https://bugs.chromium.org/p/gerrit/issues/detail?id=13514;新版本大概长这样目前待升级的 gerrit 版本为 2.13.9,根据官方文档,必须确保每个中间版本都被升级,所以升级路线暂定为:注意:v2.16是唯一包含和支持 reviewDB 到 NoteDB 的关键版本Reference Doc:https://gitenterprise.me/2019/05/20/ge

1481

基础命令与mysql8x以上的版本的安装

1系统账户(程序运行需要的账户,linux需手动添加,一般解释器是)(uid1-499普通用户(uid500-65535所有账户有且必须只有一个初始组,但是可以有很多个附加组1、用户名2、密码占位 真正的密码是在中,shadow文件只有root才可以看到3、用户id 0超级用户1-499系统用户伪用户,500-65535普通用户4、初始组用户 添加用户默认添加同名组/etc/group5、用户说明,可有可无6、用户家目录7。

m0_72618941的博客 1035

Docker安装 Mysql 8.x 版本

Docker安装 Mysql 8.x 版本Mysql创建子账号并授权; Mysql数据迁移

博客 1954

GROUP BY隐性排序:MySQL 5.x 与 8.x 的行为大不同

某天,一个老项目从 MySQL 5.7 升级8.0 后,前端同事突然发现报表顺序乱了。明明查询语句没改:在 5.7 下结果是有序的,而在 8.0 下却顺序随机。是不是MySQL出了Bug?其实,并不是——是你一直在“误用”GROUP BY的副作用。对比项MySQL 5.xMySQL 8.x是否自动排序是(副作用)否(严格标准)排序依据GROUP BY 字段顺序不保证顺序性能表现稍慢更高效解决方案显式ORDER BY同上。

2401_89221704的博客 924

MySQL之索引失效情况

文章目录1 MySQL索引1.1 简介1.1.1 索引创建1.1.2 索引类型1.1.3 索引优缺点1.2 SQL优化1.2.1 查看执行计划1.2.2 show profile分析1.2.3 trace2 索引失效2.1 问题引入2.2 准备工作2.2.1 创建user表2.2.2 插入数据2.2.3 查看数据库版本2.3 联合索引2.3.1 联合索引中索引有效2.3.2 联合索引中索引失效2.4 select *2.5 索引列上有计算2.6 索引列用了函数2.7 字段类型不同2.8 like左边包含%2

上善若泪 8795

Linux用户与权限管理,安装mysql8x以上版本

1用户名2密码占位 真正的密码是在/etct/shadow中,shadow文件只有root才可以看到3用户id 0超级用户 1-499 系统用户伪用户, 500-65535 普通用户4初始组用户 添加用户默认添加同名组 /etc/group5用户说明,可有可无6用户家目录7用户登录后的权限 /bin/bash 可以执行可以执行所有权限 /sbin/nolog 伪用户无法登录window要修改为管理员,就修改组。

m0_70848838的博客 1514

新版XAMPP替换MySQL5.7.X

XAMPP新版本中的MySQL版本太高了,我们给它换成我们需要的5.7.X版本

松崽子的博客 2367

mysql8小时连接失效_MySQL数据库8小时失效问题的官方解释及处理

MySQL 5.x的某个版本之后,MySQL的自动关闭空闲连接的特性被修改了,假如一个连接空闲到超时时间(默认28000秒8小时),再次发起最近碰到了这个问题,检查后发现MySQL数据库连接池中保存的连接超时后失效了,下面是官方的解释从MySQL 5.x的某个版本之后,MySQL的自动关闭空闲连接的特性被修改了,假如一个连接空闲到超时时间(默认28000秒8小时),再次发起的Reconnect重...

weixin_35744163的博客 679

mysql 8.0与5.x系列版本忘记密码,绕过密码设置软件不同

mysql 8.0与5.x系列版本忘记密码,绕过密码设置软件不同

ylz_yg的博客 404

记一次MySQL SPATIAL 空间索引失效处理

本文描述了一个项目从自建MySQL 5.7版本切换到阿里云RDS并升级MySQL 8.0.26版本后的问题。在数据量达到百万级时,出现了慢SQL警告和全表扫描的情况。通过查找原因和参考MySQL官方文章,作者提供了解决方案:给索引列设置统一的SRID值、删除原有的SPATIAL索引、修改字段限制和重建SPATIAL空间索引。最后,问题得以解决,查询性能恢复正常。文章总结了MySQL 8.0对空间索引的更改和升级注意事项。

FigBB的博客 1007

mysql数据库失效_MySQL数据库8小时失效问题的官方解释及处理

MySQL 5.x的某个版本之后,MySQL的自动关闭空闲连接的特性被修改了,假如一个连接空闲到超时时间(默认28000秒8小时),再次发起最近碰到了这个问题,检查后发现MySQL数据库连接池中保存的连接超时后失效了,下面是官方的解释从MySQL 5.x的某个版本之后,MySQL的自动关闭空闲连接的特性被修改了,假如一个连接空闲到超时时间(默认28000秒8小时),再次发起的Reconnect重...

weixin_42509847的博客 514

STM32H743IIT6单片机 QSPI-W25Q64使用MDMA读取实验例程源码.zip

STM32H743IIT6单片机 QSPI-W25Q64使用MDMA读取实验例程源码.zip

下一篇: mysql 批量清除表
stone723cool
博客等级 码龄15年 47粉丝 6原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值