不仅仅是DUPLICATE KEY INSERT IGNORE不仅仅会忽略DUPLICATE KEY错误,也会忽略非空错误 数据库有表student如下: mysql> show create table...set (0.00 sec) 因为class_id非空,所以插入失败 mysql> insert into student(name) values("tenmao"); ERROR 1364 (HY000...): Field 'class_id' doesn't have a default value 使用ignore后插入失败,class_id被设置为int的默认值0 mysql> insert ignore...| +----+--------+----------+ 2 rows in set (0.00 sec) 字段NOT NULL是为了防止插入时漏掉这个字段,但是使用INSERT IGNORE后,会自动设置一个没有用的默认值...,导致系统数据错误。
问题场景 先来看个场景: 执行一条插入语句,因为id是主键,没有设置自增,所以在插入的时候我们必须要添加该字段的值,但是上面没有添加就出现了1364的错误提示信息,针对这种情况我们应该怎么处理呢...上图中的 1364是 MySQL_error_code, HY000 是sqlstate_value 错误码 说明 MySQL_error_code 是数值类型错误代码,比如 1364 sqlstate_value...是长度为5的字符串类型错误代码,比如 HY000 案例:定义“Field_Not_Be_NULL”错误名与MySQL中违反非空约束的错误类型是“ERROR 1364 (HY000)”对应。...CONDITION FOR SQLSTATE 'HY000'; 3.定义处理程序 可以为SQL执行过程中发生的某种类型的错误定义特殊的处理程序。...SQLWARNING :匹配所有以01开头的SQLSTATE错误代码;NOT FOUND :匹配所有以02开头的SQLSTATE错误代码;SQLEXCEPTION :匹配所有没有被SQLWARNING或
(name) values ('yeyz'); ERROR 1364 (HY000): Field 'id' doesn't have a default value 不指定默认值,则会进行提醒...---+------+ 3 rows in set (0.00 sec) 结论: 主键列可以不设置not null和auto_increment选项,但是这种情况下,插入不包含主键列的记录,会提示主键没有默认值...此时,需要单独提供主键的默认值。 如果主键列为int类型,并且包含auto_increment选项,则可以直接插入不包含主键列的记录。 2 主键为多个字段时,是否允许其中一个字段自增?...,没有默认值会报错,如下: mysql >>insert into index_test4 (id) values (7); ERROR 1364 (HY000): Field 'name...4 当字段有null值时,反向查找可能会得到错误结果 看看下面这个例子: mysql >>select * from index_test3; +----+------+ | id | name
1364 (HY000): Field 'username' doesn't have a default value insert into t_user(id,username,password)...values(1,'lisi','123'); insert into t_user(id,password) values(1,'123'); 此语句出现了错误,因为在创建表时给username字段添加了非空约束...没有表级约束。...(HY000): Field 'id' doesn't have a default value id是主键,因为添加了主键约束,主键字段中的数据不能为NULL,也不能重复 主键相关的术语 主键约束...: primary key 主键字段 : id字段添加primary key之后,id叫做主键字段 主键值 : id字段中的每一个值都是主键值。
: mysql> insert into myclass(class_name) values('class1'); ERROR 1364 (HY000): Field 'class_room' doesn't...对于default而言,当用户忽略这一列的时候,如果设置了default,则使用默认值;如果没有设置default,则报错。 而对于age列: 下来再来看这个: 为什么还是让插入了呢?...而如果为我们没有在创建表的时候显示声明默认值,MySQL会优化,自动加上默认值为NULL。 四....语法: foreign key (字段名) references 主表(列) 案例: 这样的student只是有外键之名(关联关系),但是没有外键之实(没有约束)。重新创建一个。...外键需要注意: (1)从表和主表的关联关系 (2)产生外键约束 总结: 好了,到这里今天的知识就讲完了,大家有错误一点要在评论指出,我怕我一人搁这瞎bb,没人告诉我错误就寄了。
错误:1263 SQLSTATE: 22004 (ER_WARN_NULL_TO_NOTNULL) 消息:列被设为默认值,在行%ld上将NULL提供给了NOT NULL列。...错误:1364 SQLSTATE: HY000 (ER_NO_DEFAULT_FOR_FIELD) 消息:字段’%s’没有默认值。...错误:1394 SQLSTATE: HY000 (ER_VIEW_NO_INSERT_FIELD_LIST) 消息:不能在没有字段列表的情况下插入联合视图’%s.%s’。...错误:1423 SQLSTATE: HY000 (ER_NO_DEFAULT_FOR_VIEW_FIELD) 消息:视图’%s.%s’基本表的字段没有默认值。...错误:1462 SQLSTATE: HY000 (ER_FIELD_NOT_FOUND_PART_ERROR) 消息:在表中未发现分区函数字段列表中的字段。
具体来说,在 INSERT | UPDATE 语句中,IGNORE 的作用是在插入或更新数据时忽略特定的错误,而不导致整个操作失败。...另外,IGNORE 选项还可以在非空约束、写入的字段内容超过字段长度时进行截断处理等,下面是几个具体的例子。 1....当赋值时未在字段列表中加入有非空约束的字符串类型的字段时,情况如下: mysql> insert into test1(id,name,c1) values (8,'aaa','aa'); ERROR...1364 (HY000): Field 'card_no' doesn't have a default value mysql> insert ignore into test1(id,name...aaa | aa | +----+------------+---------+------+ 6 rows in set (0.00 sec) mysql> 结果:此时插入了0 (整型的默认值
,也没有默认值,那肯定是会出错,返回的错误码是1364,返回的错误信息是xxx字段没有默认值 解决方法:那么给设置一个默认值,或者给另外一个设置一个自增就可以不需要设置了 那么就给id设置一个自增吧 [...] 总结:1364是存在字段没有默认值 4.1054 我们知道这个表的字段是id和name,那我要是插入数据的时候,插入的是不同字段名呢 我插入的字段改成username,运行 [5b34088971982852e1c3813ddf458c5d.png...] 显然失败了,返回的错误码是1054,错误信息是未知列username 解决方法:认真检查输入的字段名,看看是否对应上了 总结:1054是字段名不匹配 5.1062 我们设置的id是主键,主键是唯一标识...刚刚我们插入了一条id为1的数据,那我再插入一条id为1的数据试试 [cb31e744047f146bc671a76af37d7b26.png] 返回的错误码为1062,错误信息是主键有重复内容“1”...解决方法:先看看哪些与数据库原有数据的主键相同,把这个字段的数据更换成数据库没有数据 总结:1062是主键重复 6.1366 我们设置的id是int类型的值,那如果我插入的id的数据不是int类型呢?
默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值 ? ?...----+---------+------+-----+---------+-------+ 2 rows in set (0.01 sec) # 只向id1字段添加值,会发现id2字段会使用默认值填充...# id1字段不能为空,所以不能单独向id2字段填充值; mysql> insert into t13 (id2) values (223); ERROR 1364 (HY000): Field 'id1...设置严格模式: 不支持对not null字段插入null值 不支持对自增长字段插入”值 不支持text字段有默认值 直接在mysql中生效(重启失效): mysql>set sql_mode...int,name varchar(20),dep_id int,foreign key(dep_id) references departments(dep_id)); ERROR 1215 (HY000
· 错误:1094 SQLSTATE: HY000 (ER_NO_SUCH_THREAD) 消息:未知线程ID:%lu · 错误:1095 SQLSTATE: HY000 (ER_KILL_DENIED_ERROR...· 错误:1230 SQLSTATE: 42000 (ER_NO_DEFAULT) 消息:变量'%s'没有默认值。...· 错误:1364 SQLSTATE: HY000 (ER_NO_DEFAULT_FOR_FIELD) 消息:字段'%s'没有默认值。...· 错误:1394 SQLSTATE: HY000 (ER_VIEW_NO_INSERT_FIELD_LIST) 消息:不能在没有字段列表的情况下插入联合视图'%s.%s'。...· 错误:1423 SQLSTATE: HY000 (ER_NO_DEFAULT_FOR_VIEW_FIELD) 消息:视图'%s.%s'基本表的字段没有默认值。
5 5 李闯 25 5 5 王二 24 2)主键字段的挑选原则 一:通常选择无意义的字段作为主键字段,比如说表中记录每一行行号的id...key限制,而没有使用主键自增(auto_increament), 需要我们自己给主键字段插入值,否则会出现如下错误。..."ERROR 1364 (HY000): Field 'sid' doesn't have a default value" 但是我们上面说过,主键字段一般是不进行修改的,也就是说不要主动给他值,主键字段应该是让系..."这些细节知识,有时候是我们没有注意到的,因此单独拿出来说明。"...1)怎么添加默认值约束? 方式一:创建表的时候,给字段添加默认值。
'非法 - - NO_ZERO_IN_DATE - - ERROR_FOR_DIVISION_BY_ZERO 在严格模式,在INSERT或UPDATE过程中,如果被零除(或MOD(X,0)),则产生错误...- - SQL语法支持类ONLY_FULL_GROUP_BY对于GROUP BY聚合操作,如果在SELECT中的列、HAVING或者ORDER BY子句的列,没有在GROUP BY中出现,那么这个SQL...,报error错误。...测试插入非空字段不带值,直接报错 (root@localhost) [test] >insert into test_4(id) values(6); ERROR 1364 (HY000): Field...group by name; ERROR 1055 (42000): 'test.test1.email' isn't in GROUP BY 对于GROUP BY聚合操作,如果在SELECT中的列,没有在
比如下面的null + 1 的值还是null,因为根本没有参加运算。...: mysql> insert into myclass(class_name) values('class1'); ERROR 1364 (HY000): Field 'class_room' doesn't...have a default value 3.默认值 默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。...:数据在插入的时候不给该字段赋值,就使用默认值 mysql> insert into tt10(name) values('zhangsan'); Query OK, 1 row affected (0.00...自增长的特点: 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值) 自增长字段必须是整数 一张表最多只能有一个自增长 案例: mysql> create table tt21( -> id
-- 后端连接最后一次使用最大允许间隔时间,超过将校验该连接是否有效 单位:毫秒 -->参数作用:后端连接超过此参数配置的时长没有被使用过,计算节点从连接池获取连接时会先校验该连接的连通性,保证获取到的连接可用...-+---------------+1 row in set (0.00 sec)checkUpdate参数说明:PropertyValue参数值checkUpdate是否可见否参数说明是否拦截对分片字段的更新操作默认值...设置为true的情况,同节点内可以更新,不能更新分片字段路由到不同节点的 ,如跨节点分片字段更新会有如下提示:mysql> update ss set id=13 where a='aa';ERROR...10217 (HY000): update sharding column's value can't change dn.设置为false的情况,更新分片字段可以随意更新,且更新后的数据会自动根据分片规则进行重分配...48:16> update sbtest1 set id=id+1 where k=1;ERROR 1143 (HY000): UPDATE command denied to user 'ztm'@'
因为删除主键时,提示这个错误。...alter 语句时,对已存在的表进行修改,将会强制检查表中是否包含主键,如果没有主键,则会报错。...创建一张测试表,主键初始是 id。...pk_t_id primary key(id)); Query OK, 0 rows affected (0.07 sec) 3解决方案 方案一 既然 sql_require_primary_key..., 0 rows affected (0.10 sec) Records: 0 Duplicates: 0 Warnings: 0 但可能的风险,就是删除主键,再创建主键的这段时间内,如果有主键字段的重复数据插入
(简称FK) 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。...password varchar(255) ); insert into t_user(id,password) values(1,'123'); //编译错误,约束username字段不能为空!...ERROR 1364 (HY000): Field 'username' doesn't have a default value insert into t_user(id,username,password...没有表级约束。...主键约束 :primary key 主键字段 : id字段添加primary key之后,id叫做主键字段 主键值 :id字段中的每一个值都是主键值。
计算节点参数说明idcId & idcNodeHost参数说明:PropertyValue参数值idcId是否可见是参数说明机房ID, 1:中心机房,2:容灾机房默认值0Reload是否生效是PropertyValue...INFORMATION_SCHEMA |+--------------------+1 row in set (0.00 sec)mysql> show databases;ERROR 2013 (HY000...trueReload是否生效是参数作用:该参数可以控制分片表之间的JOIN等,通过关联条件与分片字段的信息,可判断出不是可以直接下发的单库JOIN查询时,相关的JOIN语句是否可执行。...bn_a_jwy为auto分片表,分片字段为id,bn_b_jwy为match分片表,分片字段为a,bn_c_jwy为auto分片表,分片字段为a,三张表的数据量都为2w。...禁用时计算节点会返回错误提示:ERROR 1045 (HY000): Account is locked for user ''目前仅限制3323端口,3325不做限制。
emp_dept 中没有的资料也挑出来,没有的就用 NULL 来显示, # 也即显示资料是以左边的 table emp 中的资料为基础 mysql> select a.id,a.name,b.dept_id...1045:不能连接数据库,username或password错误 1048:字段不能为空 1049:数据库不存在 1050:数据表已存在 1051:数据表不存在 1054:字段不存在...1133:数据库用户不存在 1141:当前用户无权訪问数据库 1142:当前用户无权訪问数据表 1143:当前用户无权訪问数据表中的字段 1146:数据表不存在 1147:没有定义用户对数据表的訪问权限...1161:网络错误,写超时,请检查网络连接状况 1062:字段值反复,入库失败 1169:字段值反复,更新记录失败 1177:打开数据表失败 1180:提交事务失败 1181:回滚事务失败...具体请參考MYSQL手冊(各大下载站均有下载) 很多其它具体错误代码 错误名称 / 错误代码 SQL状态 ER_HASHCHK 1000 HY000 ER_NISAMCHK 1001 HY000
(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 ZEROFILL 使用0填充 说明: 1....字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值 sex enum('male','female') not null default 'male' age int...(HY000): Field 'id' doesn't have a default value ==================default==================== #设置...id字段有默认值后,则无论id字段是null还是not null,都可以插入空,插入空默认填入default指定的默认值 mysql> create table t3(id int default 1)...on update cascade ); insert into press(name) values ('北京工业地雷出版社'), ('人民音乐不好听出版社'), ('知识产权没有用出版社')
(HY000): Field 'class_room' doesn't have a default value mysql> insert into myclass (class_name,class_room...default 默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。...(前提是设置了默认值),如果没有设置,直接报错。...列描述comment 列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解,。...有没有可能插入的学生信息中有具体的班级,但是该班级却没有在班级表中?
领取专属 10元无门槛券
手把手带您无忧上云