MySQL sql_mode引发的异常

背景介绍

项目代码在多个环境运行,其中一个环境有问题。一直报错sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (3065, "Expression #2 of ORDER BY clause is not in SELECT list, references column 'xxx' which is not in SELECT list; this is incompatible with DISTINCT")百思不得其解,一样的代码,怎么会这样?

问题定位思路及步骤

把有问题的sql放到其他没有报错的数据库服务器上对比运行

结果能够正常查询结果。引发思考,同样的MySQL,版本都一样,怎么会这样?最后查到可能是sql_mode不一样导致的问题。

查看sql_mode

show variables like '%sql_mode%';

正常的数据库结果

STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

异常的数据库结果

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

扩展

sql_mode是什么

sql_mode是一组语法校验规则

mysql有哪些sql_mode

MySQL8.0总共有10sql_mode,其中6个是默认的,4个自定义配置

mysql8默认的6个mode配置

  • ONLY_FULL_GROUP_BYGROUP BY的列必须在select中,select中可以有额外的聚合函数操作
  • STRICT_TRANS_TABLES
  • NO_ZERO_IN_DATE
  • NO_ZERO_DATE
  • ERROR_FOR_DIVISION_BY_ZERO
  • NO_ENGINE_SUBSTITUTION

mysql8默认的4个自定义配置

  • NO_AUTO_VALUE_ON_ZERO
  • NO_AUTO_CREATE_USER
  • PIPES_AS_CONCAT
  • ANSI_QUOTES

总结

遇到sql在不同服务器数据库上运行有的报错,有的不报错,就可以考虑是不是sql_mode问题了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/604820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Parallels Desktop 19 for Mac v19.3.0.54924中文破解版

Parallels Desktop 19 for Mac v19.3.0.54924中文破解版是一款强大的虚拟机软件,支持多操作系统,提供卓越的虚拟化技术,确保流畅稳定的运行。新增特色功能如共享打印、TouchID集成等,提供便捷高效的虚拟机体验。界面美观现代&…

理解DPI:从数码到打印的深入分析

目录标题 1. DPI的定义2. DPI与图像质量2.1. 对于打印来说:2.2. 对于屏幕显示来说: 3. 如何计算DPI4. 调整DPI4.1. 提高DPI:4.2. 降低DPI: 5. DPI与图像文件大小的关系6. 实际应用中的DPI6.1. 专业打印:6.2. 屏幕设计&…

含义:理财风险等级R1、R2、R3、R4、R5

理财风险等级R1、R2、R3代表什么,为什么R1不保本,R2可能亏损 不尔聊投资https://author.baidu.com/home?frombjh_article&app_id1704141696580953 我们购买理财产品的时候,首先都会看到相关产品的风险等级。风险等级约定俗成有5级&…

谷歌十诫 Ten things we know to be true, Google‘s Core values

雷军曾经要求金山人人都必须能背谷歌十诫 我们所知的十件事 当谷歌刚成立几年时,我们首次写下了这“十件事”。我们时不时回顾这个列表,看看它是否仍然适用。我们希望它仍然适用——你也可以要求我们做到这点。 1. Focus on the user and all else wi…

三、Redis五种常用数据结构-Hash

Hash是redis中常用的一种无序数据结构。结构类似HashMap。 具体结构如下:key field value 1、优缺点 1.1、优点 同类数据归类整合储存,方便数据管理。相比于string操作消耗内存和CPU更小。分字段存储,节省网络流量。 1.2、缺点 过期时间…

Java数组的使用

前言 这里我使用的是IDEA编译器进行演示 数组的创建与初始化 创建格式: T[] 数组名 new T[N] T表示数组存放的数据类型,N表示数组的大小。 T[] 表示数组的类型。 这里要注意和C语言不同的是C语言使用类似int arr[10]这样的结构进行创建数组&#xff0c…

24V转3.8V用什么芯片方案-AH8310

在将24V降压至3.8V的电源转换中,AH8310是一个理想的选择。这款芯片是一款降压转换器,输入电压范围为4.5V至36V,输出电压可调,峰值电流可达1.5A。AH8310采用SOT23-6封装,内置MOS,适用于各种应用场合&#xf…

modprobe: can‘t open ‘modules.dep‘: No such file or directory

使用modprobe会提示modprobe: cant open modules.dep: No such file or directory 直接输入depmod即可。 如果depmod没有效果,则需要重新配置编译你的根文件。 在busybox配置界面进入linux Module Utilities, 上下键选择depmod,并按 y 选中&#xff0c…

【vue+vue-treeselect】根据指定字段,如isLeaf(是否末级节点),设置只允许末级节点可以选

1、当项目有特殊要求,必须根据某个字段的值去判断,是否节点可以选,即使已经是末级节点了,还是需要根据字段判断是否禁用 (1) :flat"true"一定要设置 (2)获取数据源的时候,设置下禁用…

leetcode91.解码方法(动态规划)

问题描述: 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : A -> "1" B -> "2" ... Z -> "26" 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可…

NineData亮相2024中国移动算力网络大会

4月28日至29日,2024中国移动算力网络大会在苏州召开。大会以“算力网络点亮AI新时代”为主题,全面展示了中国移动最新算力网络成果与能力。江苏省委常委、苏州市委书记刘小涛,副省长赵岩出席开幕式并致辞。内蒙古自治区副主席白清元出席。中国…

【JAVA语言-第20话】多线程详细解析(二)——线程安全,非线程安全的集合转换成线程安全

目录 线程安全 1.1 概述 1.2 案例分析 1.3 解决线程安全 1.3.1 synchronized关键字 1.3.1.1 同步代码块 1.3.1.2 同步方法 1.3.2 使用Lock锁 1.3.2.1 概述 代码示例 1.4 线程安全的类 1.4.1 非线程安全集合转换成线程安全集合 线程安全 1.1 概述 指如果有多…

JavaEE企业级开发中常用的JDK7和JDK8的时间类

JDK7时间类 全世界的时间有一个统一的计算标准 在同一条经线上的时间是一样的 格林威治时间 简称GMT 计算核心 地球自转一天是24小时 太阳直射正好是12小时 但是误差太大 现在用原子钟来代替 用铯原子震动的频率来计算时间,作为世界的标准时间UTC 中国标准时间…

Dockerfile实践java项目

目的:用java项目测试dockerfil部署(前提是安装好了docker) 部署准备文件如下 1. java项目 java项目demo地址 https://gitee.com/xiaoqu_12/dockerfileDemo.git 或者百度网盘直接下载打包好的jar包 链接:https://pan.baidu.com/s/…

Ansible---inventory 主机清单

一、inventory 主机清单 1.1、inventory介绍 hosts配置文件位置:/etc/ansible/hosts Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。 1.2、inventory中的变量 Inventory变量名含义…

数值计算方法——大题题型总结

目录 一、绝对误差限、相对误差限 1.1 例题 1.2 解题套路 1.3 题解 二、敛散性、收敛速度 2.1 例题 2.2 解题套路 2.3 题解 三、牛顿迭代法 3.1 例题 3.2 解题套路 3.3 题解 四、割线法 4.1 例题 4.2 解题套路 ​4.3 题解 五、列主元素消去法 5.1 例题 5.…

新版Idea配置仓库教程

这里模拟的是自己搭建的本地仓库环境,基于虚拟机搭建利用gogs创建的仓库 1、Git环境 你需要准备好git和仓库可以使用github 、gitee等 1.1 拉取代码 本项目使用 Git 进行版本控制,在 gogs 上创建一个个人使用的 git 仓库: http://192.168.…

【Linux】项目自动化构建工具make/makefile的简单使用

使用步骤 1) 编写 创建 makefile 文件 vim makefile用 vim 打开名为 makefile 的文件,存在该文件则打开编辑,不存在则创建并打开.在 makefile 文件中编写需要编译的文件 test:test.cppg -o test test.cpp第一行: 冒号左侧为编译后的可执行文件名,可以随便取. 冒号右侧为依赖…

vue2项目升级到vue3经历分享4

后端重构,如果接口做好抽象封装,只需要考虑jar之间的兼容性问题,jdk版本不变,基本不用做太大的调整,但是前端就不一样,除了vue框架本身,css的调整,改起来更是让人头疼。前面写了vue2…

Linux与windows网络管理

文章目录 一、TCP/IP1.1、TCP/IP概念TCP/IP是什么TCP/IP的作用TCP/IP的特点TCP/IP的工作原理 1.2、TCP/IP网络发展史1.3、OSI网络模型1.4、TCP/IP网络模型1.5、linux中配置网络网络配置文件位置DNS配置文件主机名配置文件常用网络查看命令 1.6、windows中配置网络CMD中网络常用…