首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL中的sql_mode参数

MySQL中的sql_mode参数 sql_mode参数详解 首先我们看看mysql中默认的sql_mode的值是什么: root@localhost :(none)09:25:15>select...一共有7个值,分别是 only_full_group_by: 对于group by聚合操作,如果在select中的列,没有在group by中出现,那么将认为这个sql是不合法的,因为列不在group...,包含id和nam两列,sql_mode参数的存在不允许我们对个结果中的nam列进行group by,但是当我们select nam的时候,就可以进行group by操作。...在STRICT_TRANS_TABLES模式下,插入数据时,mysql会严格的进行数据的校验,当发现插入列值未满足要求,直接报告error错误,保证了错误数据无法插入到数据库中。...如果未给出该模式,被零除时MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作结果为NULL。

1.5K10

【MySQL】MySQL配置中sql_mode的作用

MySQL配置中sql_mode的作用 不知道你有没有踫到过这种问题,在 MySQL8 默认的情况下,我们之前习惯的为 DateTime 类型指定的 0000-00-00 这种格式是无法插入或者修改数据的...sql_mode 根据官网的解释,MySQL 服务器是可以在不同的 SQL 模式中运行的,这个模式会影响 MySQL 支持的 SQL 语法及其执行的数据验证检查。...我们可以通过上面的方式直接修改 my.cnf 文件,当然也可以通过 SET sql_mode=xxx 的形式在命令行中动态修改,如果是修改的 my.cnf 文件,则需要重启 MySQL 服务,再次执行插入语句...,现在迁移到 MySQL8 的话,那么去掉 sql_mode 中的 NO_ZERO_IN_DATE 和 NO_ZERO_DATE 参数就可以了,NO_ZERO_DATE 代表是否允许 0000 这种格式...mysql> set sql_mode='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

15310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    技术分享 | 深入理解 MySQL 中的 SQL_MODE

    1什么是 SQL_MODE? SQL_MODE 是 MySQL 数据库中的一个系统变量,用于控制 MySQL 如何处理 SQL 语句和数据校验。...通过阅读本文,你将收获以下知识点: MySQL 不同版本的默认 SQL_MODE 值 常用的 SQL_MODE 设置及其含义 SQL_MODE 在数据迁移中的关键作用 2SQL_MODE 有哪些值?...4SQL_MODE 在迁移中的用法 当从 MySQL 迁移到其他异构数据库时,SQL_MODE 的配置和调整在数据迁移过程中起着关键作用。...(如 STRICT_TRANS_TABLES)可以帮助识别哪些数据在当前配置下可能会在目标数据库中引发问题。...启用宽松模式:通过设置较为宽松的 SQL_MODE(如禁用 NO_ZERO_DATE、NO_ZERO_IN_DATE),可以让 MySQL 接受一些可能在目标数据库中允许的数据格式,并确保这些数据能被顺利迁移

    17910

    MySQL 报错:5.7版本sql_mode=only_full_group_by问题

    另外在重新启动mysql,可能会报错,删除my.ini中新添的文件,重新启动即可, MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的...BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中 NO_AUTO_VALUE_ON_ZERO: 该值影响自增长列的插入。...STRICT_TRANS_TABLES: 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制 NO_ZERO_IN_DATE: 在严格模式下,不允许日期和月份为零 NO_ZERO_DATE...如 果未给出该模式,那么数据被零除时MySQL返回NULL NO_AUTO_CREATE_USER: 禁止GRANT创建密码为空的用户 NO_ENGINE_SUBSTITUTION: 如果需要的存储引擎被禁用或未编译...如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysql的sql_mode设置如下: 在my.cnf添加如下配置 [mysqld] sql_mode=’ONLY_FULL_GROUP_BY

    1.4K90

    MySQL 报错:5.7版本sql_mode=only_full_group_by问题

    另外在重新启动mysql,可能会报错,删除my.ini中新添的文件,重新启动即可, MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的...BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中 NO_AUTO_VALUE_ON_ZERO: 该值影响自增长列的插入。...STRICT_TRANS_TABLES: 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制 NO_ZERO_IN_DATE: 在严格模式下,不允许日期和月份为零 NO_ZERO_DATE...如 果未给出该模式,那么数据被零除时MySQL返回NULL NO_AUTO_CREATE_USER: 禁止GRANT创建密码为空的用户 NO_ENGINE_SUBSTITUTION: 如果需要的存储引擎被禁用或未编译...如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysql的sql_mode设置如下: 在my.cnf添加如下配置 [mysqld] sql_mode=’ONLY_FULL_GROUP_BY

    1.7K30

    如何在Linux中删除软链接

    符号链接(也称为软链接或符号链接)在 Linux 中是一种特殊类型的文件,可用作另一个文件的快捷方式。 你可以使用 ln 命令创建软链接。但是怎么删除呢?...在 Linux 中没有专门用于删除符号链接的特殊命令。你可以使用 rm 命令,该命令也用于删除文件和目录。 rm symbolic_link_name 你也可以在此处使用取消链接命令。...不要用它的名字。它不仅用于删除链接;它也可以删除文件。...你能识别ls命令的长列表输出中的软链接吗? > ls -l 它以字符l开头,并且名称显示它指向的文件。...强制删除指向目录的链接将删除实际目录的内容 删除硬链接 与软链接不同,硬链接与原始文件的内容是一样的。

    13.3K20

    如何在 Linux 中强制删除目录?

    在Linux系统中,有时候可能会遇到无法正常删除目录的情况,例如目录包含非空文件、没有删除权限等。在这种情况下,我们可以使用一些强制删除的方法来解决问题。...本文将详细介绍在Linux中如何强制删除目录的几种常见方法。图片方法一:使用 rm 命令rm 命令是Linux中常用的删除文件和目录的命令。...以下是使用 rmdir 命令结合 rm 命令强制删除目录的步骤:首先,使用 rmdir 命令删除目录中的所有子目录和文件,直到目录变为空目录。...rmdir --ignore-fail-on-non-empty 该命令会尝试递归删除目录中的所有子目录,但会忽略非空目录的删除错误。然后,使用 rm -rf 命令删除空目录。...这个命令会递归地搜索目录中的所有文件和子目录,并对每个文件和子目录执行相应的 rm 命令来强制删除。

    8.6K30

    Mysql服务器SQL模式 (官方精译)

    由于 ERROR_FOR_DIVISION_BY_ZERO 已被弃用,它将在未来的MySQL版本中作为单独的模式名称被删除,其效果包含在严格SQL模式的影响中。...从MySQL 5.7.4开始, NO_ZERO_DATE已被弃用。在MySQL 5.7.4到5.7.7中, NO_ZERO_DATE当明确命名时什么都不做。相反,其效果包含在严格SQL模式的效果中。...由于NO_ZERO_DATE已被弃用,它将在未来的MySQL版本中作为单独的模式名称被删除,其效果包含在严格SQL模式的影响中。...由于NO_ZERO_IN_DATE已被弃用,它将在未来的MySQL版本中作为单独的模式名称被删除,其效果包含在严格SQL模式的影响中。...长期计划仍然是将三种受影响的模式纳入严格的SQL模式,并将其作为明确的模式在未来的MySQL版本中删除。

    3.4K30

    MySQL的sql_mode模式说明及设置

    如 果未给出该模式,那么数据被零除时MySQL返回NULL NO_AUTO_CREATE_USER: 禁止GRANT创建密码为空的用户 NO_ENGINE_SUBSTITUTION: 如果需要的存储引擎被禁用或未编译...改为严格模式后可能会存在的问题: 若设置模式中包含了NO_ZERO_DATE,那么MySQL数据库不允许插入零日期,插入零日期会抛出错误而不是警告。...'0000-00-00' COMMENT '日期';这些显然是不满足sql_mode中的NO_ZERO_DATE而报错。...模式设置和修改(以解决上述问题为例): 方式一:先执行select @@sql_mode,复制查询出来的值并将其中的NO_ZERO_IN_DATE,NO_ZERO_DATE删除,然后执行set sql_mode...方式二:先执行select @@global.sql_mode,复制查询出来的值并将其中的NO_ZERO_IN_DATE,NO_ZERO_DATE删除,然后执行set global sql_mode =

    2K30

    如何在ubuntu 中彻底删除docker

    但是每种开源方案都依赖于一定的软件环境,不同的开源方案还互相冲突。 这种软件环境的冲突可以依靠建立不同的用户来解决,但是也有些软件 必须使用sudo安装到系统环境中。...但是,不管是virtual box还是kvm,都需要准备体积庞大的镜像,不符合 轻量化的开发趋势。Docker的好处就这样显示出来了。...目前碰到的问题就是,由于不知名的原因docker无法运行,使用命令 apt remove docker 之后docker命令依旧有效。...使用dpkg查询已安装包,针对性删除 # 查询相关软件包 dpkg -l | grep docker # 删除这个包 sudo apt remove --purge docker.io 删除前后的控制台输出如下...: [1awbuwzgbg.png] 可以看出已经成功完成docker的删除。

    21.8K41

    MySQL windows解压版

    [client] default-character-set=utf8mb4 配置环境变量: 选择PATH,在其后面添加: 你的mysql bin文件夹的路径 (如:C:\Program Files...by '123456'; #修改密码 踩过的坑:如果服务启动出问题,那就删除data文件夹,重新初始化 设置sql_mode # 查看当前sql_modeselect @@sql_mode; # 查看全局...sql_mode 常用值如下:  ONLY_FULL_GROUP_BY: 对于 GROUP BY 聚合操作,如果在 SELECT 中的列,没有在 GROUP BY 中出现,那么这个 SQL 是不合法的,...STRICT_TRANS_TABLES: 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制 NO_ZERO_IN_DATE: 在严格模式下,不允许日期和月份为零 NO_ZERO_DATE...如 果未给出该模式,那么数据被零除时 MySQL 返回 NULL NO_AUTO_CREATE_USER: 禁止 GRANT 创建密码为空的用户 NO_ENGINE_SUBSTITUTION: 如果需要的存储引擎被禁用或未编译

    1.3K20

    如何在遍历的同时删除ArrayList 中的元素

    3、使用Java 8 中提供的filter 过滤Java 8 中可以把集合转换成流,对于流有一种filter 操作, 可以对原始Stream 进行某项测试,通过测试的元素被留下来生成一个新Stream。...Hollis")).collect(Collectors.toList());System.out.println(userNames);4、使用增强for 循环其实也可以如果,我们非常确定在一个集合中,...某个即将删除的元素只包含一个的话, 比如对Set 进行操作,那么其实也是可以使用增强for 循环的,只要在删除之后,立刻结束循环体,不要再继续进行遍历就可以了,也就是说不让代码执行到下一次的next 方法...Java 中,除了一些普通的集合类以外,还有一些采用了fail-safe 机制的集合类。...由于迭代时是对原集合的拷贝进行遍历,所以在遍历过程中对原集合所作的修改并不能被迭代器检测到,所以不会触发ConcurrentModificationException。

    3.8K81

    MySQL sql_mode

    文章目录[隐藏] 说明 常用值说明 生产环境sql_mode推荐设置 说明 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。...设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告 ERROR_FOR_DIVISION_BY_ZERO 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告...如 果未给出该模式,那么数据被零除时MySQL返回NULL NO_AUTO_CREATE_USER 禁止GRANT创建密码为空的用户 NO_ENGINE_SUBSTITUTION 如果需要的存储引擎被禁用或未编译...,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION linux 宽松模式 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE...,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 注意: NO_AUTO_CREATE_USER再MYSQL8.0中已经被移除,不能再8.0以上版本配置

    63630

    SQL大小写规范与sql_mode的设置

    在MySQL中,大小写敏感性是一个重要的问题。MySQL默认情况下是不区分大小写的,这意味着在查询时,大小写不会对查询结果产生影响。...它可以设置MySQL如何处理查询和数据的方式。在MySQL中,可以通过SET语句来设置sql_mode。...NO_ZERO_DATE:禁止在日期或时间列中插入“0000-00-00”或“00:00:00”的值。ONLY_FULL_GROUP_BY:启用SQL标准中对GROUP BY的更严格限制。...同时,我们使用下划线分隔对象名(如“table1”),并在SQL语句和关键字之间添加了空格。通过设置sql_mode,我们可以确保MySQL在执行查询时遵循严格的规则,从而避免意外的错误。...例如,如果我们尝试在日期列中插入“0000-00-00”或“00:00:00”的值,MySQL将会抛出错误,而不是插入这些无效的值。

    1.2K20

    MySQL sql_mode的坑及严格模式详解

    mysql可以为不同的客户端设置不同的sql_mode,并且每个应用能够设置他自己的会话级别的sql_mode。sql_mode会影响sql语法以及mysql显示数据的正确性。...踩了 MySQL8 的一个关于 sql_mode 的坑,这是 MySQL5.7 后默认的: Expression #1 of SELECT list is not in GROUP BY clause...,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION sql_mode支持的模式 ONLY_FULL_GROUP_BY:这个模式对查询的影响有点大...NO_FIELD_OPTIONS : 这个模式将会在5.7.22中删除。 NO_KEY_OPTIONS, NO_TABLE_OPTIONS :同上。...NO_ZERO_DATE不是严格模式的一部分,应该和严格模式一起被使用。因为NO_ZERO_DATE将会被放弃在将来的mysql中,它的影响将会被包含进严格模式中。

    2.7K20

    MySQL中使用group by出现1055错误的解决办法

    注:由于执行sql进行修改的方法在重启mysql后会失效,所以本文仅介绍通过修改配置文件从而永久解决该问题的办法 在MYSQL中通过GROUP BY查询数据时报错如下 [Err] 1055 - Expression...=only_full_group_by 如下图: 在Navicat中或是登录mysql,通过sql_mode查询支持的语法: select @@sql_mode; 结果如下: ONLY_FULL_GROUP_BY...sql_mode:简而言之就是:它定义了你MySQL应该支持的sql语法,对数据的校验等 解释:ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中的列...,Linux中的操作如下: 修改根目录中的/etc中的my.cnf(Linux中为my.cnf,Windows中为my.ini) [root@VM_0_14_centos bin]# vi /etc/...my.cnf 在[mysqld]标签中加入: sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO

    74210
    领券