当前位置: 首页 > news >正文

个人网站涉及企业内容好听的公司名称

个人网站涉及企业内容,好听的公司名称,建筑公司企业愿景范文,北京网站建设价格低#x1f3af; 从 MySQL 5.7 到 8.0#xff1a;理解 GROUP BY 的新规则与实战优化 #x1f50e; 引言 随着 MySQL 的不断升级#xff0c;从 5.7 到 8.0#xff0c;不仅性能得到提升#xff0c;其对 SQL 标准的严格执行也显著提高。GROUP BY 的行为变化就是一个典型例子。… 从 MySQL 5.7 到 8.0理解 GROUP BY 的新规则与实战优化 引言 随着 MySQL 的不断升级从 5.7 到 8.0不仅性能得到提升其对 SQL 标准的严格执行也显著提高。GROUP BY 的行为变化就是一个典型例子。对开发者而言MySQL 8.0 强制遵守 ONLY_FULL_GROUP_BY 规则虽然提高了数据一致性但也为老代码迁移带来了不小的挑战。 本文将从 问题背景 出发通过 报错分析 和 案例复盘探讨如何应对 MySQL 升级带来的挑战同时总结出一套高效的解决方案。 一、问题背景MySQL 升级带来的挑战 1. 什么是 GROUP BY GROUP BY 是一种将数据按字段分组的 SQL 操作通常用于统计、聚合和分析场景。示例如下 SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department;2. MySQL 5.7 的行为 默认启用了 ONLY_FULL_GROUP_BY 模式但执行较为宽松。某些情况下未完全符合规则的查询也能隐式运行。 3. MySQL 8.0 的行为 严格执行 ONLY_FULL_GROUP_BY 模式。未分组字段或未使用聚合函数的字段会直接报错。示例 SELECT column1, column2, MAX(column3) FROM table_name GROUP BY column1;在 MySQL 8.0 中若 column2 未出现在 GROUP BY 或未使用聚合函数将报错 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column column2 which is not functionally dependent on columns in GROUP BY clause.二、常见报错与原因 1. 报错示例 1 SELECT column1, column2 FROM table_name GROUP BY column1;错误信息 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column column2.原因column2 既未分组也未聚合违反了 SQL 标准。 2. 报错示例 2 SELECT column1, MAX(column2), column3 FROM table_name GROUP BY column1;错误信息 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column column3.原因column3 未分组或聚合与 ONLY_FULL_GROUP_BY 规则冲突。 三、解决方案 方法 1修改 SQL 查询 ️ 调整查询以符合 GROUP BY 规则 1. 所有未聚合字段必须出现在 GROUP BY 中。 2. 为未分组字段使用聚合函数。 示例改写 -- 错误写法 SELECT column1, column2 FROM table_name GROUP BY column1;-- 正确写法 SELECT column1, MAX(column2) AS max_column2 FROM table_name GROUP BY column1;优缺点 • ✅ 优点符合标准解决问题的长远之道。 • ❌ 缺点需要对旧代码进行大规模修改。 方法 2调整 MySQL 配置 ⚙️ 通过调整 MySQL 的 sql_mode 配置禁用 ONLY_FULL_GROUP_BY 步骤 1. 检查当前 sql_mode SELECT GLOBAL.sql_mode;输出示例 STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY,NO_ENGINE_SUBSTITUTION2. 移除 ONLY_FULL_GROUP_BY SET GLOBAL sql_mode(SELECT REPLACE(sql_mode, ONLY_FULL_GROUP_BY, ));3. 修改配置文件永久禁用编辑 /etc/mysql/my.cnf [mysqld] sql_modeSTRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION4. 重启 MySQL 服务 sudo systemctl restart mysql验证 SELECT GLOBAL.sql_mode;输出中不应包含 ONLY_FULL_GROUP_BY。 优缺点 • ✅ 优点快速解决问题无需修改 SQL。 • ❌ 缺点可能导致聚合结果错误需谨慎使用。 四、插曲配置文件冲突与排查 1. 配置文件加载顺序 MySQL 加载配置文件的顺序如下 1. /etc/my.cnf 2. /etc/mysql/my.cnf 3. /etc/mysql/conf.d/.cnf 4. /etc/mysql/mysql.conf.d/.cnf 问题 多个配置文件中定义了 sql_mode后加载的文件会覆盖前面的设置。 2. 如何发现冲突 检查所有配置文件 sudo grep -R sql_mode /etc/mysql/查看实际加载的配置文件 mysql --help | grep Default options验证实际生效的 sql_mode SELECT GLOBAL.sql_mode;3. 解决冲突的最佳实践 • 将主要的 sql_mode 定义放在 /etc/mysql/my.cnf。 • 针对工具如 mysqldump的特殊需求单独在 /etc/mysql/conf.d/*.cnf 中配置。五、实际案例复盘 案例 1查询菜单类型统计 表名eb_system_menu 表结构 -------------------------- | Field | Type | -------------------------- | id | int | | menu_type | varchar(2) | | name | varchar(100) | --------------------------需求统计每种菜单类型的数量。 SELECT menu_type, COUNT(*) AS count FROM ydkj-mall.eb_system_menu GROUP BY menu_type;案例 2用户状态分布统计 表名eb_user 表结构 -------------------------- | Field | Type | -------------------------- | uid | int | | status | tinyint(1) | | nickname | varchar(100) | --------------------------需求统计每种状态的用户数量。 SELECT status, COUNT(*) AS user_count FROM ydkj-mall.eb_user GROUP BY status;六、总结与最佳实践 1. 理解 MySQL 的变化 MySQL 8.0 的严格模式符合标准化要求虽然迁移成本较高但能显著提高数据一致性。 2. 合理选择解决方案 修改 SQL 查询是最推荐的长远方案。调整 sql_mode 可作为短期过渡但需严格测试。 3. 配置管理的建议 集中管理 sql_mode避免多文件冲突。使用工具检查实际生效的配置确保一致性。 附录常用 SQL 验证命令 -- 查看当前模式 SELECT GLOBAL.sql_mode;-- 查看表结构 DESCRIBE table_name;-- 显示加载的配置文件 mysql --help | grep Default options;通过对 MySQL 的深入分析和实战操作相信你已经掌握了解决 GROUP BY 规则冲突的技巧。希望这篇文章能帮助你在数据库升级中游刃有余轻松应对变化
http://www.hkea.cn/news/14483208/

相关文章:

  • 广告创意设计大赛贵港seo
  • 做微信电影网站邢台网站建设
  • 做推广什么网站好wordpress互联网访问
  • 已被网站管理员设置拦截wordpress怎么读
  • 福州网站建站公司idea做百度网站
  • 网站建设图片大小温州百度推广排名
  • 做服装外单的网站有哪些深圳网站建设微信商城开发
  • 国外大学网站建设比较汕头定制网站建设
  • 网站营销设计长沙企业网站建设报价
  • 南昌品牌网站建设网店推广的作用是选择题
  • 网页无法访问此网站买淘宝店铺多少钱一个
  • 国内做的较好的网站网站后台进不去的原因
  • 做pc端网站讯息有网址的公司
  • 银川市住房城乡建设局网站wordpress ddos 2014
  • 网站整体建设方案论文wordpress企业主题自适应
  • 国外手机网站模板阿里云网站建设方案书怎么写
  • 网站备案核验号做一个微信小程序难吗
  • 网站营销外包成都专业网站建设套餐
  • 那有名网站是php做的在线购物商城系统
  • 网站建设分组任务计算机多媒体辅助教学网站开发
  • 关于阅读类网站的建设规划书网络规划与设计实用教程
  • wordpress 获取作者id重庆seo排
  • 济南网站建设及推广济南网站制做
  • 如何做淘宝直播教学视频网站买外链网站
  • 做网站的公司天津网站右侧信息跟随左侧菜单栏变化
  • 蒙文网站建设情况汇报任丘市网站建设
  • 潍坊专业网站建设哪家便宜网站建设的实验报告
  • Gzip 网站 能够压缩图片吗长沙网站建设外贸
  • 网站建设未来wordpress 服务器权限
  • 温州在线制作网站最好的无代码平台