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

MySQL高级篇-程序出了问题怎么办?

问题场景   先来看个场景:   执行一条插入语句,因为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)”对应。...错误类型 也就是条件:SQLSTATE ‘字符串错误码’ :表示长度为5的sqlstate_value类型的错误代码; MySQL_error_code :匹配数值类型错误代码;错误名称 :表示DECLARE...SQLWARNING :匹配所有以01开头的SQLSTATE错误代码;NOT FOUND :匹配所有以02开头的SQLSTATE错误代码;SQLEXCEPTION :匹配所有没有被SQLWARNING或

63220

数据库常见错误码

但是大部分同学都会选择直接重写语句而不是先考虑如何根据错误信息来修改,其实学会看错误码,能够快速的定位自己的错误,更容易就能解决问题哦 那么,我们现在就介绍一下几种比较常见的错误码吧 常见错误码 1.1007 我们创建一个叫test的数据库的时候,发现创建失败,显示错误代码为...[f051ef0a35a8ff7ac6ed5c04ab87251b.png] [1ad3e288d1c9e9034547deaa4799d2a8.png] 显然,两个非空的字段,插入数据的时候没有设置数据...,也没有默认值,那肯定是会出错,返回的错误码是1364,返回的错误信息是xxx字段没有默认值 解决方法:那么给设置一个默认值,或者给另外一个设置一个自增就可以不需要设置了 那么就给id设置一个自增吧 [...31eed54af82641804864085c9f3df05b.png] 再次运行插入数据,只设置了name这个数据,不设置id,成功了 [6bd4737c4d8fae176a02274b956a4ede.png] 总结:1364...是存在字段没有默认值 4.1054 我们知道这个表的字段是id和name,那我要是插入数据的时候,插入的是不同字段名呢 我插入的字段改成username,运行 [5b34088971982852e1c3813ddf458c5d.png

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

    hive学习笔记之六:HiveQL基础

    ,如下图所示,学生表有个住址ID字段,是住址表里的记录的唯一ID: 先创建住址表: create table address (addressid int, province string, city...字段关联了address表的addressid字段: create table student (name string, age int, addressid int) row format delimited...; 结果如下,可见name=mary的记录,addressid等于5,在address中不存在addressid等于5的记录,因此province和city字段都展示了NULL,而在前面使用inner...join时,结果中没有这条记录: Total MapReduce CPU Time Spent: 950 msec OK tom 11 1 guangdong guangzhou jerry 12 2...; 结果如下,可见city=nanjing的记录,在student表中没有一条记录与之关联,因此结果中展示了address的字段,而student的字段为NULL: Total MapReduce CPU

    29020

    hive学习笔记之六:HiveQL基础

    ,如下图所示,学生表有个住址ID字段,是住址表里的记录的唯一ID: [在这里插入图片描述] 先创建住址表: create table address (addressid int, province string...字段关联了address表的addressid字段: create table student (name string, age int, addressid int) row format delimited...; 结果如下,可见name=mary的记录,addressid等于5,在address中不存在addressid等于5的记录,因此province和city字段都展示了NULL,而在前面使用inner...join时,结果中没有这条记录: Total MapReduce CPU Time Spent: 950 msec OK tom 11 1 guangdong guangzhou jerry...; 结果如下,可见city=nanjing的记录,在student表中没有一条记录与之关联,因此结果中展示了address的字段,而student的字段为NULL: Total MapReduce CPU

    27200

    MySQL索引的一些小细

    从结果来看,建表语句是可以的,但是当我们进行插入的时候,如果不指定id的值: mysql>>insert into index_test1 (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

    53520

    权限漏洞:水平权限漏洞、垂直权限漏洞

    水平权限漏洞是指Web应用程序接收到用户请求时,没有判断数据的所属人,或者在判断数据所属人时是从用户提交的参数中获取了userid,导致攻击者可以自行修改userid修改不属于自己的数据。...id=1 如上,攻击者修改addressId即可得到他人的address信息。...修复方案: 1、最正规的方案:把权限的控制转移到数据接口层中,避免出现select/update/delete … where addressID=#addressID#的SQL语句,使用select/...update/delete… where addressID=#addressID# and ownerId=#userId#来代替,要求web层在调用数据接口层的接口时额外提供userid,而这个userid...另外的方法: 1、可对ID加密 2、使用UUID 3、每一个信息增加一个发布人的字段,修改的人必须与发布的人为同一个人才可以访问 垂直权限漏洞是指Web应用没有做权限控制,或仅仅在菜单上做了权限控制,导致恶意用户只要猜到了其他页面的

    2.5K10

    关于范式的一些简单理解

    不难发现第一个图中爱好这一列可以分解为两列,如右图中所示,但是这样就不符合1nf要求的列不可再分的要求,右图也不符合没有重复列的要求,不符合1nf。...符合第一范式应该如下图所示(同时去掉第一个表的爱好字段): ?...如图所示,我们将Name和City两个属性作为主键,省份这个字段依赖于城市这个字段,同时不依赖于Name这个字段,根据城市可以确定省份。省份跟Name没有关系不符合第二范式。...应该将省市单独拿出来独立成表(AddressID,Province,City),主表则变成(ID,Name,AddressID),通过AddressID关联。...BCNF(Boyce-Codd normal form),在3NF的基础上,表中任何字段对任一候选关键字段的传递函数依赖都不存在。

    57780

    ⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、外键、非空....

    PRIMARY KEY ④默认约束—— 保存数据时,未指定该字段的值,则采用默认值 DEFAULT ⑤检查约束(8.0.16版本之后)—— 保证字段满足某一条件 CHECK ⑥外键约束—— 用来让两证表的数据之间建立连接...,gender) VALUES ('小一',22,'1','女'); -- 当设置非空约束的字段name插入null值,会报错: -- 错误代码: 1048 Column 'name' cannot...,会报错: -- 错误代码: 3819 Check constraint 'test_chk_1' is violated....INSERT INTO test(NAME,age,STATUS,gender) VALUES ('小二',-1,'1','女'); -- 当插入数据时,没有为默认约束字段status设置值,会自动设置默认值...null(前提是外键关联字段可以为null) SET DEFAULT:在父表进行更新/删除时,首先检查记录是否存在外键,存在则将外键关联的字段值设置为一个默认值(Innodb不支持) 添加外键约束时指定更新行为

    536100

    关于范式的一些简单理解

    第一范式,第一范式是关系型数据库的基础条件,我将1nf的特点归纳为以下几点: 1.不允许出现重复的行; 2.没有重复的列; 3....不难发现第一个图中爱好这一列可以分解为两列,如右图中所示,但是这样就不符合1nf要求的列不可再分的要求,右图也不符合没有重复列的要求,不符合1nf。...举例说明: 如图所示,我们将Name和City两个属性作为主键,省份这个字段依赖于城市这个字段,同时不依赖于Name这个字段,根据城市可以确定省份。省份跟Name没有关系不符合第二范式。...应该将省市单独拿出来独立成表(AddressID,Province,City),主表则变成(ID,Name,AddressID),通过AddressID关联。...BCNF(Boyce-Codd normal form),在3NF的基础上,表中任何字段对任一候选关键字段的传递函数依赖都不存在。

    28010

    默认用户名和密码(SQL)

    SQLCODE=-400是通用的致命错误代码。字段约束(SQL)字段约束指定管理字段允许的数据值的规则。...但是,可以为该字段创建多个没有值(NULL)的记录。 DEFAULT默认值:必须指定一个值,否则 IRIS会为每个记录中的此字段提供一个默认值(接受空字符串)。...DEFAULT NOT NULL:必须指定一个值,否 IRIS会为每个记录中的此字段提供一个默认值(可接受的空字符串)。...UNIQUE DEFAULT唯一默认值:不推荐-必须指定唯一值,否则 IRIS会为每个记录中的此字段提供一个默认值(一个可接受的空字符串)。...UNIQUE DEFAULT NOT NULL:不建议-必须指定唯一的值,否则 IRIS会为每个记录中的此字段提供一个默认值(一个可接受的空字符串)。

    5.4K10

    MySQL:表的约束

    : mysql> insert into myclass(class_name) values('class1'); ERROR 1364 (HY000): Field 'class_room' doesn't...默认值default 默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。...对于default而言,当用户忽略这一列的时候,如果设置了default,则使用默认值;如果没有设置default,则报错。 而对于age列: 下来再来看这个: 为什么还是让插入了呢?...而如果为我们没有在创建表的时候显示声明默认值,MySQL会优化,自动加上默认值为NULL。 四....语法: foreign key (字段名) references 主表(列) 案例: 这样的student只是有外键之名(关联关系),但是没有外键之实(没有约束)。重新创建一个。

    6710

    带你学MySQL系列 | 一文让你真正理解MySQL数据库的“完整性约束”?

    key限制,而没有使用主键自增(auto_increament), 需要我们自己给主键字段插入值,否则会出现如下错误。..."ERROR 1364 (HY000): Field 'sid' doesn't have a default value" 但是我们上面说过,主键字段一般是不进行修改的,也就是说不要主动给他值,主键字段应该是让系..."这些细节知识,有时候是我们没有注意到的,因此单独拿出来说明。"...insert into student(age,idcard) values (33,"123456789"); 举例如下: 6.添加默认值约束(default) 某个字段当被设置了默认值以后,当我们不为该字段指定值的时候...1)怎么添加默认值约束? 方式一:创建表的时候,给字段添加默认值。

    79740

    数据库SQL小技巧大揭秘:IGNORE选项让你的数据处理更从容

    另外,IGNORE 选项还可以在非空约束、写入的字段内容超过字段长度时进行截断处理等,下面是几个具体的例子。 1....忽略非空约束 2.1 列出字段赋值为null时 当列出需赋值的字段,但是对其中的非空字段赋值为null时,结果如下: mysql> select * from test1; +----+------...1364 (HY000): Field 'card_no' doesn't have a default value mysql> insert ignore into test1(id,name...,也可以插入成功,也是将其插入一个空字符串 2.3 未列整型字段时 当赋值时未在字段列表中加入有非空约束的整型类型的字段时,情况如下: mysql> select * from test1; +---...aaa | aa | +----+------------+---------+------+ 6 rows in set (0.00 sec) mysql> 结果:此时插入了0 (整型的默认值

    48920
    领券