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

MySQL:当指定了错误的枚举值时,禁止插入空字符串

MySQL是一种开源的关系型数据库管理系统,它是云计算领域中最常用的数据库之一。MySQL支持多种编程语言,并且具有良好的性能和可靠性。

在MySQL中,当指定了错误的枚举值时,禁止插入空字符串的行为是由数据库的约束条件来实现的。具体来说,可以通过在表的定义中使用ENUM类型来限制列的取值范围。ENUM类型是一种枚举类型,它允许列只能取预定义的值之一。

当指定了错误的枚举值时,MySQL会拒绝插入空字符串的行为,因为空字符串不在预定义的枚举值列表中。这样可以确保数据的完整性和一致性。

MySQL的ENUM类型具有以下优势:

  1. 数据完整性:通过限制列的取值范围,可以确保数据的完整性,避免插入错误的枚举值。
  2. 查询效率:由于ENUM类型的取值范围是固定的,MySQL可以使用更高效的数据结构来存储和查询这些值。
  3. 简化应用逻辑:使用ENUM类型可以简化应用程序的逻辑,避免对错误的枚举值进行处理。

应用场景: ENUM类型适用于那些具有固定取值范围的列,例如性别、状态、类型等。通过使用ENUM类型,可以确保数据的一致性,并简化应用程序的开发和维护。

腾讯云提供了多种与MySQL相关的产品和服务,包括云数据库MySQL、云数据库TDSQL、云数据库MariaDB等。这些产品提供了高可用性、高性能、安全可靠的MySQL数据库服务,可以满足不同规模和需求的用户。

更多关于腾讯云MySQL产品的信息,请访问以下链接:

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

相关·内容

MySQL枚举类型enum字段在插入不在指定范围, 是否是”插入了enum第一个”?…「建议收藏」

刚刚在看>一书”ENUM类型”一节, 以下面的代码举例, 得出结论: “还可以看出对于不在ENUM指定范围内, 并没有返回警告, 而是插入了enum(‘M’, ‘F’)第一个...这个相当于是一个警告信息,在我本地测试 5.7 中,直接插入会报错,但是使用 ignore 后,数据能被强制插入,但是是。...INSERT ignore INTO user (sex) VALUES (5); 在服务器使用 MySQL 5.5 测试 无论是否添加 ignore 数据都能被插入,但是是。...在 MySQL 枚举类型“八宗罪” 这篇文章第七条,文中提到了,如果不合法会被处理成空字符串,在后一段中又提到了因为类型缘故,会根据枚举索引去取值。...总结:报错跟版本有关,5.5版无论是否添加igonre都可以插入,但是; 5.7版本添加ignore可以插入,但是; 不添加直接报错”ERROR 1265 (01000): Data truncated

1.8K20

MySQL字段约束 null、not null、default、auto_increment

MySQL默认情况下指定字段为NULL修饰符,如果一个字段指定为NOT NULL,MySQL则不允许向该字段插入(这里面说都为NULL),因为这是“规定”。...向这些字段中插入NULL将会导致插入下一个自动增加或者当前时间戳。 DEFAULT 修饰符: 可以使用DEFAULT修饰符为字段设定一个默认。...插入记录,您老人家忘记传该字段MySQL会自动为您设置上该字段默认。 如果一个字段中没有指定DEFAULT修饰符,MySQL会依据这个字段是NULL还是NOT NULL自动设置默认。...如果指定字段可以为NULL,则MySQL为其设置默认为NULL。...如果是NOT NULL字段,MySQL对于数值类型插入0,字符串类型插入字符串,时间戳类型插入当前日期和时间,ENUM类型插入枚举第一条。

5.5K20
  • MySQL sql_mode坑及严格模式详解

    官方文档建议:使用innodb存储引擎表,考虑使用innodb_strict_mode模式sql_mode,它能增量额外错误检测功能。...ERROR_FOR_DIVISION_BY_ZERO :如果这个模式未启用,那么零除操作将会插入并且不会产生警告;如果这个模式启用,零除操作插入并产生警告;如果这个模式和严格模式都启用,零除从操作将会产生一个错误...NO_AUTO_CREATE_USER :禁止grant语句自动创建用户,除非认证信息被指定,语句必须包含一个非密码使用identified by或使用认证插件identified with....NO_AUTO_VALUE_ON_ZERO : 这个影响自增列,正常情况下可以通过插入“0”或者null来生成自增序列下一个。...NO_AUTO_VALUE_ON_ZERO模式会抑制这种行为,仅仅插入null才会生成下一个序列自增值。这个模式是非常有用的当0已经在表自增序列中存储

    2.2K20

    MySQL-2

    有很多种方法可以指定浮点列所需要精度,这使得MySQL会选择不同数据类型或在存储进行取舍。这些精度定义是非标准,所以建议只指定数据类型而不指定精度。...CHAR类型定长MySQL总是根据定义字符串长度分配足够空间。存储CHARMySQL会删除所有的末尾空格。CHAR会根据需要采用空格进行填充以方便比较。...MySQL服务器,操作系统以及客户端连接都有时区设置。默认情况下,若插入时没有指定第一个TIMESTAMP列MySQL则设置这个列为当前时间。TIMESTAMP列默认为NOT NULL。...MySQL限制每个关联操作最多只有61张表。单个查询最好在12个表以内做关联。 全能枚举:防止过度使用枚举。...加快alter table 操作速度 MySQL执行大部分修改表结构操作方法是用新结构创建一个表,从旧表中查处所有数据插入新表,然后删除旧表。

    81210

    Java后端开发规范(基于阿里开发规范)

    3) 获取统计方法用 count 做前缀。 4) 插入方法用 save/insert 做前缀。 5) 删除方法用 remove/delete 做前缀。...【推荐】一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起, 便于阅读。 【推荐】循环体内,字符串连接方式,使用 StringBuilder append 方法进行扩展。...十、MySQL数据库 建立表规约 【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字。...【强制】在 varchar 字段上建立索引,必须指定索引长度,没必要对全字段建立索引,根据 实际文本区分度决定索引长度即可。...【强制】某一列全是 NULL ,count(col)返回结果为 0,但 sum(col)返回结果为NULL. 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。

    67821

    MySQL基础『数据类型』

    字符,用空格填充字符串指定长度 VARCHAR(SIZE) 可变长度字符串,最大支持 65535 字符,它不会用空格填充 BLOB 二进制数据 TEXT 大文本,不支持全文索引、默认,需要注意有一些变体...,表示枚举类型,只能选取其中一个,由于在某些数据库系统中限制,ENUM 使用有时会受到争议 SET 字符串对象,表示集合类型,可以选取零个或多个 创建一个数据库 dataType mysql...这是因为 小数部分不足MySQL 自动补齐,补齐后,实际插入为 -100.00,有五位数,超出范围,自然就被拦截 MySQL 也并非是铁面无私,当我们插入数据小数部分超过指定精度MySQL...char 被称为 固定长度字符串,不过这个字符串也是有 约束 实际插入字符串长度超过 char 固定长度插入操作会被拦截,并且 char 支持最大长度为 255,大于 255 字符串注定不能使用...向其中插入,只能选择枚举中已经存在元素,并且只能选择一个 mysql> insert into votes values ('张三', '男'), ('小红', '女'); mysql> select

    18510

    Spring学习笔记(二十一)——规范开发:SpringBoot表单验证、AOP切面编程、统一返回结果和异常处理

    简单事务处理 业务需求:插入两条数据插入第一条数据成功,插入第二条数据出现问题,需求保证两条数据必须同时插入,或者同时回滚不插入。...@Future 限制必须是一个将来日期 @Max(value) 限制必须为一个不大于指定数字 @Min(value) 限制必须为一个不小于指定数字 @Pattern(value...) 限制必须符合指定正则表达式 @Size(max,min) 限制字符长度必须在min到max之间 @Past 验证注解元素(日期类型)比当前时间早 @NotEmpty 验证注解元素不为...null且不为字符串长度不为0、集合大小不为0) @NotBlank 验证注解元素不为(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串空格...,在建立一个枚举类ResultEnums.java,用来统一枚举可能发生异常和错误码。

    67210

    MySQL必须知道点!

    同时在status这类字段上标注:0表示删除,1表示正常 等枚举。 3.必须使用UTF8mb4字符集 utf8是通用字符集,mb4 在utf8上进行了扩展,支持emoj等新字符。...c)null需要更多存储,无论是表还是索引中每行中null列都需要额外空间来标识。...c)varchar可以支持模糊查询,例如:like“138%” 12.禁止使用ENUM,可使用TINYINT代替 a)增加新ENUM要做DDL操作 b)ENUM内部实际存储就是整数,你以为自己定义字符串...因为MySQL优化器在选择如何优化查询,会根据统一信息,对每一个可以用到索引来进行评估,以生成出一个最好执行计划,如果同时有很多个索引都可以用于查询,就会增加MySQL优化器生成执行计划时间,同样会降低查询性能...(3)建立组合索引,必须把区分度高字段放在前面 理由:能够更加有效过滤数据 14.关于SQL使用规范 (1)禁止使用INSERT INTO t_xxx VALUES(xxx),必须显示指定插入列属性

    69230

    mysql 分区 varchar_MySQL分区总结

    可以使用 values less than maxvalue 设置分区,超出明确指定分区,数据会存储在该分区,如: MySQL支持在 values less than 字句中使用表达式 partition...Range分区特别使用两种情况: 1、需要删除过期数据,只需要简单 ALTER TABLE emp DROP PARTITION p0 来删除p0分区中数据,对于具有上百万条记录表来说,删除分区要比运行一个...分区支持使用 Blob 或 Text 类型外其他类型列作为分区键 创建 Key 分区表时候,可以不指定分区键,默认会首先选择使用主键作为分区键 在没有主键情况,会选择非唯一键作为分区键,分区键唯一键必须是非...附:MySQL 分区 null 处理 1、MySQL 分区不禁止在分区键值上使用 null 2、Range 分区中,null 会被当做最小来处理 3、List 分区中,null 必须出现在枚举列表中...,否则不被接受 4、Hash/Key 分区中,null 会被当做零来处理 5、为了避免在处理 null 出现误判,推荐通过设置字段非和默认来绕开 MySQL 对 null 默认处理 发布者

    3.3K20

    MySQL 快速入门(一)

    基本数据类型 数值类型 日期和时间类型 字符串类型 枚举与集合类型 MySQL快速入门(一) 简介 存储数据演变过程 数据存储通过我们自己编写来决定,存到文件样式千差万别 软件开发目录规范规定文件位置..., manager FROM employee WHERE manager = NULL; # 这是错误 这个错误原因在于将一个与一个未知进行数学比较,结果仍然未知;即使是将两个进行比较...= NULL; 如果表达式 expression ,IS NULL 返回真,IS NOT NULL 返回假;如果表达式不为,IS NULL 返回假,IS NOT NULL 返回真; select...版本之后默认开启严格模式,规定多少宽度,就插入多少数据,超出报错 约束条件 desc查看表结构,查看是否可以插入 mysql> desc t5; +-------+---------+-----...baseball','others') # 集合类型 ) # 插入时候只能插入枚举类型指定字段 insert into user values(1,'hammer','male'); # 正确 insert

    1.5K20

    【数据库】MySqlsql_mode模式说明

    TRADITIONAL模式 :严格模式,mysql数据库插入数据,进行数据严格校验,保证错误数据不能插入,报error错误。用于事物,会进行事物回滚。...(测试时候,数据原样插入,没有转换为0000-00-00)ANSI_QUOTES :启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符。...:禁止grant语句自动创建用户,除非认证信息被指定,语句必须包含一个非密码使用identified by或使用认证插件identified with.NO_AUTO_VALUE_ON_ZERO...NO_ENGINE_SUBSTITUTION :此模式指定当执行create语句或者alter语句指定存储引擎没有启用或者没有编译,控制默认默认存储引擎自动切换。默认是启用。...举个例子,将’14:52:12.15’插入到time(1)时候,是插入’14:52:12.2’还是插入’14:52:12.1′为OFF,进行四设五入,插入14:52:12.2;为ON,舍弃多余位数

    1.5K50

    国产数据库兼容过程中涉及MySQL非严格模式

    在非严格模式下,MySQL会对某些数据插入、更新和比较操作执行隐式转换,从而在一些情况下允许执行一些宽松操作,而不抛出错误或警告。...涉及主要参数说明如下: a) STRICT_TRANS_TABLES:在插入或更新数据禁止自动转换类型,确保所有数据都符合表定义数据类型范围。如果无法转换为合法数据类型,则抛出错误。...e) ERROR_FOR_DIVISION_BY_ZERO:除数为零,抛出错误而不是返回NULL。...-00-00'等 2) 非严格字符串插入:在非严格模式下,MySQL允许插入过长字符串,会自动截断超过字段长度部分 (建议已开启此类严格模式) eg: varchar(2) 类型字段,插入...可以插入150,且插入自动截断为 127 4) 非严格插入:在非严格模式下,MySQL允许插入字符串类型到数值类型字段,会将非数值字符串转换为0 (建议已开启此类严格模式) eg:

    33620

    MySQL(数据类型和完整约束)

    L+4字节,在此L<2^24 ENUM 枚举类型,只能有一个枚举字符串 1或2个字节,取决于枚举数目(最大65535) SET 一个设置,字符串对象可以有0个或多个SET成员 1,2,3,4或8...默认情况下,插入一条记录但并没有指定TIMESTAMP这个列MySQL会把TIMESTAMP列设为当前时间。...因此需要插入记录同时插入当前时间,使用TIMESTAMP是方便,另外TIMESTAMP在��上比DATETIME更有效。...View Code 类型一 not null和default not null – 不可 default默认,创建列可以指定默认插入数据如果未主动设置,则自动添加默认 =======...==============default==================== #设置id字段有默认后,则无论id字段是null还是not null,都可以插入插入默认填入default指定默认

    94320

    MySQL sql_mode应该如何指定

    sql_mode是个很容易被忽视变量,在5.6之前默认为,在这种设置下是可以允许一些非法操作,比如允许一些非法数据插入。在生产环境一般将这个设置为严格模式。...sql_mode分类及各定义 分类sql_mode说明启用不启用数据检查类NO_ENGINE_SUBSTITUTION指定ENGINE,需要存储引擎被禁用或不存在,该如何处理直接报错Warning...|视为字符串连接操作符而非 或 运算符- - NO_TABLE_OPTIONS 使用SHOW CREATE TABLE不会输出MySQL特有的语法部分,如 ENGINE。...mysql数据库插入数据,进行数据严格校验,保证错误数据不能插入,报error错误。...用于事物,会进行事物回滚。日期类型中月和日部分不能包含0,不能有0这样日期(0000-00-00),数据不能除0,禁止grant自动创建新用户等一些校验。

    2K30

    PawSQL更新 | 新增9个SQL正确性审核规则

    PawSQL最新版本针对DML和DQL新增审核和重写优化规则共计33个,整体规则数目达到了83个,覆盖了正确性,安全性、可维护性、性能四个方面的SQL质量问题,并提供优化建议,已经形成比较完善针对数据操作...避免COUNT DISTINCT多个可列 规则描述 当你使用COUNT(DISTINCT) 进行多列计算,它计算结果可能和你预想不同。...默认预警级别 禁止 触发条件 INSERT...VALUES列显式指定 INSERT...VALUES列和数量一致 5....INSERT语句必须包含主键字段 规则描述 对于没有自增主键表,即使其有默认插入数据应该指定主键。 默认预警级别 警告 触发条件 表有主键 主键非自增列 8....INSERT语句禁止使用SYSDATE函数 规则描述 SYSDATE()函数在基于STATEMENT模式主从环境下可能造成数据不一致,因为语句在主库中执行到日志传递到备库,存在时间差,到备库执行时候就会变成不同时间

    6610

    高性能MySQL(2)——Schema与数据类型优化

    使用枚举(enum)代替字符串类型 枚举可以把一些不重复字符串存储成一个预定义集合,MySQL在存储枚举非常紧凑,会根据列表压缩到1到2个字节中。...MySQL在内部会将列中枚举保存为整数,在.frm文件中保存一个“数字->字符串映射关系,通过数字快速查找到具体枚举。...枚举字段排序时,并不会按照给定字符串排序,而是根据内部整数排序,所以建议列举枚举按照预想顺序给出。...查询BIT(1),结果是一个包含二进制0或1字符串,而不是ASCII码中“0”或“1”。 BIT列进行比较MySQL会将位字符串转换为十进制数字进行比较。 例如:‘111’ = 7。...即使需要存 储一个事实上”到表中,也不一定非得使用NULLO也许可以使用0、某个特殊,或者空字符串作为代替。 但是遵循这个原则也不要走极端。

    69520

    MySQL】03_数据类型

    它不会对插入数据进行影响,数据宽度小于5位时候在数字前面需要用字符填满宽度。该项功能需要配合“ ZEROFILL” 使用,表示用 “0” 填满宽度,否则指定显示宽度无效。...DECIMAL类型不指定精度和标度,其默认为DECIMAL(10,0)。 数据精度超出了定点数类型 精度范围,则MySQL同样会进行四舍五入处理。...如果保存,数据实际长度比CHAR类型声明长度小,则会在 右侧填充 空格以达到指定长度。MySQL检索CHAR类型数据,CHAR类型字段会去除尾部空格。...ENUM类型 ---- ENUM类型也叫作枚举类型,ENUM类型取值范围需要在定义字段进行指定。 设置字段,ENUM类型只允许从成员中选取单个,不能一次选取多个。...(s) VALUES ('A,B,C,A'); #向SET类型字段插入SET成员中不存在MySQL会抛出错误

    2.1K30

    技术分享 | 深入理解 MySQL SQL_MODE

    STRICT_TRANS_TABLES:非法日期,超过字段长度插入时,直接报错,拒绝执行。例如,如果向一个整数列插入超出范围,将触发错误。...NO_ENGINE_SUBSTITUTION:执行 CREATE TABLE 或者 ALTER TABLE 语句,如果指定存储引擎不可用,MySQL 会抛出错误,而不是使用默认存储引擎。...ERROR_FOR_DIVISION_BY_ZERO:同 MySQL 5.7,除以零MySQL 将抛出错误,而不是返回 NULL。...TRADITIONAL 模式:严格模式,MySQL 数据库插入数据,进行数据严格校验,保证错误数据不能插入,报 ERROR 错误。用于事务,会进行事务回滚。...空字符串与 NULL 处理:在 MySQL 中,空字符串和 NULL 可能在一些情况下被视为相等,而在其他数据库中并非如此。迁移前,应该明确这些字段逻辑,并在必要进行转换。

    11410

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券