数据库严格模式_mysql关系型数据库

数据库严格模式_mysql关系型数据库设置严格模式为当前会话设置严格模式:执行SETsql_mode=’STRICT_TRANS_TABLES’或者SETsql_mode=’STRICT_ALL_TABLES’。全局设置严格模式:执行SETglobalsql_mode=’STRICT_TRANS_TABLES’或者SETglobalsql_mode=’STRICT_ALL_TABLES’。或者在MyS…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

设置严格模式

为当前会话设置严格模式:

执行SET sql_mode = ‘STRICT_TRANS_TABLES’ 或者SET sql_mode = ‘STRICT_ALL_TABLES’。

全局设置严格模式:

执行SET global sql_mode = ‘STRICT_TRANS_TABLES’ 或者SET global sql_mode = ‘STRICT_ALL_TABLES’。

或者在 MySQL 配置文件中配置以下内容,再重启:

设置非严格模式:SET sql_mode=” 。

查询当前的 SQL 模式

STRICT_TRANS_TABLES 和 STRICT_ALL_TABLES 的区别

唯一的区别是:

对于不支持事务的表,若开启 STRICT_TRANS_TABLES,MySQL 会尝试将一个不合法的字段值转换成一个值最近的合法值插入表中;而开启 STRICT_ALL_TABLES 后,则表现为不写入数据,且抛出错误。

因为现在绝大部分用的 InnoDB 引擎,是支持事务的,所以基本不用关心这种区别。

严格模式和非严格模式的区别

严格模式下不能在无符号整数字段插入负值

严格模式下,无默认值的 not null 字段在插入数据时必须指定值

严格模式下,插入字符串不能超出定义长度

对于下表:

在非严格模式下执行

会成功插入数据,但是内容被截断,只剩4个字符:

但是严格模式下会报错:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219082.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号