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

mysql 修改sqlmode

基础概念

MySQL的sql_mode是一个系统变量,它定义了MySQL服务器在执行SQL语句时的行为模式。这个变量可以包含多个模式,每个模式都是一个字符串,用于控制特定的行为,如数据校验、日期格式化、错误处理等。

相关优势

  1. 数据完整性:通过设置严格的sql_mode,可以确保数据的完整性和一致性。
  2. 错误预防:某些模式可以帮助预防常见的SQL错误,如插入非法数据。
  3. 兼容性:不同的应用可能需要不同的SQL模式来保持与旧版本数据库的兼容性。

类型

MySQL的sql_mode可以分为以下几类:

  • ONLY_FULL_GROUP_BY:要求在使用GROUP BY时,SELECT列表中的所有列都必须在GROUP BY子句中出现。
  • NO_ZERO_DATE:禁止插入'0000-00-00'这样的日期。
  • STRICT_TRANS_TABLES:在事务表中,如果插入的值无效,则中断当前操作。
  • NO_AUTO_CREATE_USER:禁止使用GRANT语句创建用户时自动创建密码。

应用场景

  • 开发环境:在开发环境中,通常会设置较严格的sql_mode,以确保代码的质量和数据的完整性。
  • 生产环境:在生产环境中,可能会根据具体需求调整sql_mode,以平衡数据完整性和性能。

修改SQL Mode的方法

可以通过以下几种方式修改MySQL的sql_mode

临时修改(仅对当前会话有效)

代码语言:txt
复制
SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,NO_ZERO_DATE,STRICT_TRANS_TABLES';

或者

代码语言:txt
复制
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,NO_ZERO_DATE,STRICT_TRANS_TABLES';

永久修改(对所有会话有效)

编辑MySQL配置文件(通常是my.cnfmy.ini),在[mysqld]部分添加以下行:

代码语言:txt
复制
sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_DATE,STRICT_TRANS_TABLES

然后重启MySQL服务。

遇到的问题及解决方法

问题:修改sql_mode后,某些SQL语句无法执行

原因:可能是由于新的sql_mode设置过于严格,导致某些SQL语句不符合规范。

解决方法

  1. 检查SQL语句:确保SQL语句符合新的sql_mode要求。
  2. 调整sql_mode:如果某些SQL语句确实需要放宽要求,可以适当调整sql_mode

例如,如果遇到ONLY_FULL_GROUP_BY导致的问题,可以暂时禁用它:

代码语言:txt
复制
SET GLOBAL sql_mode = REPLACE(sql_mode, 'ONLY_FULL_GROUP_BY', '');

或者

代码语言:txt
复制
SET SESSION sql_mode = REPLACE(sql_mode, 'ONLY_FULL_GROUP_BY', '');

参考链接

通过以上信息,你应该能够理解MySQL的sql_mode及其相关概念,并能够在不同场景下进行适当的配置和调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQLmode最佳实践

简介: MySQL服务可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值。...---------------------------------------------------+1 row in set (0.01 sec) sql_mode参数分为全局和会话级别,可以动态修改...NO_ZERO_DATE:设置该值,mysql数据库不允许插入'0000-00-00'日期,插入零日期会抛出错误而不是警告。...如 果未给出该模式,那么数据被零除时MySQL返回NULL。 NO_AUTO_CREATE_USER:禁止使用GRANT语句创建密码为空的用户。...具体采用严格或非严格模式可以根据需求来修改。注意该参数在不同实例要保持一致,不然可能会出现一条sql在此环境下可以执行 在另外一个环境不能执行的情况。

1.4K20

mysql5.7在使用group by的注意事项

mysql5.7在使用group by的注意事项 1、问题描述 2、解决方案(一): 3、解决方案(二) 4、解决方案(三) 1、云数据库修改方案: 2、本地数据库修改方案: 1、问题描述 先看一个sql...语句报错: select * from oilDaily group by wellId 这是因为在mysql5.7中开启了sql_mode中的“only_full_group_by”,而这个在执行以往版本中带有...云数据库,修改方式如下: 1、云数据库修改方案: 点击管理 点击参数设置 找到sql_mode选项 去掉ONLY_FULL_GROUP_BY的勾选。...之后重启下云数据库就行 2、本地数据库修改方案: 如果你是用的本地数据库执行以下命令即可: set @@global.sqlmode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE...查一下,再将ONLY_FULL_GROUP_BY去掉,将剩下的赋值给sqlmode即可。

67120
  • mysql - 5.7版本

    具体内容 一、安装 由于CentOS 的yum源中没有mysql5.7,需要到mysql的官网下载yum repo配置文件 wget https://dev.mysql.com/get/mysql57-...登录mysql:(密码为上一步骤获取的临时密码) mysql -u root -p # 按下回车输入密码 修改密码(密码不能太简单会提示error) ALTER USER 'root'@'localhost...或者修改 root 为允许远程连接(不推荐) GRANT ALL PRIVILEGES ON *.* TO 'name'@'%' IDENTIFIED BY 'password' WITH GRANT...显示当前连接的数据库 select version(); # 显示当前服务器版本 select now(); # 显示当前日期 select user(); # 显示当前用户名 编码配置 修改...] default-character-set=utf8 # 增加[mysql] 修改sqlmode 什么是sqlmode请参考Sqlmode [mysqld] sql_mode=STRICT_TRANS_TABLES

    65720

    修改mysql密码

    win10安装配置修改mysql 8.0 1.安装包 镜像站下载 2.配置文件 在Windows系统中,配置文件默认是安装目录下的 my.ini 文件,部分配置需要在初始安装时配置,大部分也可以在安装完成后进行更改...5.修改密码 先使用刚获取的初始密码进行登录 mysql -uroot -p 输入如下命令进行修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY "123456..." 到这里mysql 8.0的初始密码就修改完成了!...ubuntu系统下mysql重置密码和修改密码操作 一、忘记密码后想重置密码 在介绍修改密码之前,先介绍一个文件/etc/mysql/debian.cnf.其主要内容如下图: 里面有一个debian-sys-maint...3.重启mysql sudo service mysql restart 4.在终端输入命令mysql,进入mysql 5.使用命令use mysql;切换到mysql数据库 6.修改root密码 UPDATE

    8.2K30

    mysql怎么修改密码,mysql修改密码的几种方法

    方法一:通过mysql控制台直接设置密码 第一步我们打开mysql console,输入mysql原先密码,按回车键进去,这里原密码为空,如下图所示: 第二步输入“set password =password...(‘123456’);”,按回车键之后,就成功将密码改为123456了,如果想修改密码为其他,直接将123456改成想要设置的密码就可以,如下图所示: 第三步我们使用mysql图形界面工具navicat...尝试一下密码是否修改成功,新建连接,输入数据库用户名和刚刚设置的密码,点击确定,如下图所示: 第四步我们双击建立的连接,可以看到已经成功建立连接,进去了mysql数据库,代表密码修改成功了,如下图所示...: 方法二:通过修改mysql中user表修改密码 第一步打开mysql控制台,输入原密码进去之后,输入“use mysql;”,按回车键进去mysql数据库中,如下图所示: 第二步输入“...update user set password=password(‘123456’) where user=‘root’;”,按回车键,将原密码修改为123456,如下图所示: 发布者:全栈程序员栈长

    21K30

    【mysql基础】修改密码

    解决这个问题的方法是,重新安装一遍,步骤如下: 1、下载mysql-5.7.21-winx64.zip,地址:https://www.mysql.com/downloads/ 2、解压缩 3、配置mysql...环境变量 4、在mysql目录下,新建文件my.ini,设置basedir,datadir,port,比如: [mysqld] ; 设置mysql客户端默认字符集 #character-set-server...=utf8 ;设置3306端口 port = 3306 ; 设置mysql的安装目录 basedir=E:\\software\mysql-5.7.21-winx64 ; 设置mysql数据库的数据的存放目录...6、执行mysqld --install命令,完成服务安装 7、启动服务 net start mysql 8、登陆mysql, mysql -u root -p 9、停止mysql,net stop mysql...10、卸载mysql,mysqld remove 11、在注册表里清除你的MYSQL服务 12、修改 CREATE DATABASE easy3w_nnn default charset utf8 COLLATE

    2.6K30

    Mysql修改字段名、修改字段类型

    1 修改字段类型、字段名、字段注释、类型长度、字段默认值 mysql修改字段类型: --能修改字段类型、类型长度、默认值、注释 --对某字段进行修改 ALTER TABLE 表名 MODIFY [...、类型长度、默认值、注释 alter table table1 modify column1 decimal(10,2) DEFAULT NULL COMMENT '注释'; -- 正常,能修改字段类型...、类型长度、默认值、注释 mysql修改字段名: ALTER TABLE 表名 CHANGE [column] 旧字段名 新字段名 新数据类型; alter table table1 change...table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释...alter table table1 change column2 column1 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、

    7K10
    领券