mysql 配置引起的报错

由于最近做mysql版本的升级,为了测试兼容性,部署了另一个高版本的mysql服务,测试过程中发现有些问题

(1)一些查询报错,用group by的

sql_mode设置的不同

新实例有个ONLY_FULL_GROUP_BY需要去掉!而且新版本是8*,不支持 NO_AUTO_CREATE_USER这个模式,也需要去掉。

java 复制代码
NO_AUTO_CREATE_USER 是一个已废弃的 SQL 模式选项,在早期的 MySQL 版本中用于控制 GRANT 语句的行为。当这个模式被激活时,它会阻止 GRANT 
语句自动创建不存在的用户账户,除非在授予权限的同时也指定了用户的密码。这意味着,如果你尝试为一个尚不存在的用户授予权限,
而且没有提供密码,MySQL 不会自动创建这个用户,而是会失败或者忽略这个请求。

例如,如果你执行如下 GRANT 语句:

GRANT SELECT ON database.* TO 'newuser'@'localhost';

在 NO_AUTO_CREATE_USER 模式下,如果 'newuser'@'localhost' 这个用户之前不存在,并且没有同时提供一个密码,
这个命令将会失败,以防止无意识地创建用户账户。

然而,从 MySQL 8.0.11 开始,包括 NO_AUTO_CREATE_USER 在内的几个与账户管理相关的旧特性已被移除,因此在 MySQL 8.0 及以后的版本中,
你不再需要也不应该使用 NO_AUTO_CREATE_USER 这个模式选项。在这些新版本中,如果想要创建用户并授予权限,
必须明确地使用 CREATE USER 语句创建用户,然后再使用 GRANT 语句分配权限,并且在创建用户时提供密码。

(2)插入报错,timestamp类型的字段设置的都是NOT NULL,旧实例插入成功,新实例失败

查了下2个实例对于 explicit_defaults_for_timestamp 这个参数配置不同,旧实例是OFF状态,高版本实例是ON状态,高版本也关闭该配置即可兼容

参考

https://cloud.tencent.com/developer/article/1408102

相关推荐
山甫aa28 分钟前
JavaWeb后端开发学习手册
java·开发语言·数据库·学习·mysql·springboot·web
夜雪一千12 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb
程序员夏洛16 小时前
MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
数据库·mysql
l12586517 小时前
# RAG向量数据库优化实战:HNSW索引调参与生产级性能设计
数据库·python·mysql·langchain
梦Arrebol17 小时前
Mysql内容及相关实验
数据库·mysql
OceanWaves199318 小时前
mysql 8.0.32 磁盘爆满,清理从库日志
数据库·mysql
霸道流氓气质19 小时前
MySQL 大表 DDL 变更 — 原理、方案与实践
android·数据库·mysql
JavaPub-rodert20 小时前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
Code额21 小时前
基于 SQLAlchemy 2.x,面向 MySQL 数据库的从入门到精通实战教程(2)
数据库·sql·mysql·adb·ai
爱吃火鸡面呀1 天前
MySQL 查询与函数详解:从基础条件筛选到高级字符处理
数据库·mysql