表中存在唯一索引时,有时候为了避免插入重复数据,我们会使用MySQL的INSERT IGNORE语法,这样如果唯一索引有冲突就会自动忽略。...不仅仅是DUPLICATE KEY INSERT IGNORE不仅仅会忽略DUPLICATE KEY错误,也会忽略非空错误 数据库有表student如下: mysql> show create table...> 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 into student(name) values("tenmao");...NOT NULL是为了防止插入时漏掉这个字段,但是使用INSERT IGNORE后,会自动设置一个没有用的默认值,导致系统数据错误。
MySQL中的异常处理 1....问题场景 先来看个场景: 执行一条插入语句,因为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)”对应。...EXIT :表示遇到错误马上退出。UNDO :表示遇到错误后撤回之前的操作。MySQL中暂时不支持这样的操作。
(name) values ('yeyz'); ERROR 1364 (HY000): Field 'id' doesn't have a default value 不指定默认值,则会进行提醒...,会提示主键没有默认值。...此时,需要单独提供主键的默认值。 如果主键列为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 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) 消息:在表中未发现分区函数字段列表中的字段。...错误:1471 SQLSTATE: HY000 (ER_MIX_HANDLER_ERROR) 消息:在该MySQL版本中,不允许分区中的句柄组合。
XAMPP 环境配置下出现的问题 版本 :xampp 7.3.1 今天,柳妹在虚拟机上面又一次搭建xampp的环境的时候,在mysql的管理界面对于root@localhost 管理用户进行密码设定的时候...,修改了密码,当再一次点击进入的时候,报错如下: MySQL 返回:无法连接:无效的设置。...您应该检查配置文件中的主机、用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致。 ...提示是错误 1045,他告诉我们错误是由于没有访问权限,所以访问被拒绝了,主要原因就是由于该用户名所对应的密码错误。...经过在windows上搭建环境所经历的情况,我发现第一种解决方法能够帮助我解决问题,主要就是将密码清空了,还原到原来没有设置密码的环境下,那么原来的配置正好生效,因此问题解决。
· 错误: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'基本表的字段没有默认值。...· 错误:1462 SQLSTATE: HY000 (ER_FIELD_NOT_FOUND_PART_ERROR) 消息:在表中未发现分区函数字段列表中的字段。
站在正常的业务逻辑中: 如果班级没有名字,你不知道你在哪个班级。 如果教室名字为空,就不知道在哪上课。 所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。...: mysql> insert into myclass(class_name) values('class1'); ERROR 1364 (HY000): Field 'class_room' doesn't...如果我们没有明确指定一列要插入,用的是default。如果建表中,对应列默认没有设置default,无法直接插入。 default和not null不冲突,而是互相补充的。...而如果为我们没有在创建表的时候显示声明默认值,MySQL会优化,自动加上默认值为NULL。 四....自增长 auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。
一、表的约束 在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。...(简称PK) 外键约束(foreign key):…(简称FK) 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。...(HY000): Field 'id' doesn't have a default value id是主键,因为添加了主键约束,主键字段中的数据不能为NULL,也不能重复 主键相关的术语 主键约束...: primary key 主键字段 : id字段添加primary key之后,id叫做主键字段 主键值 : id字段中的每一个值都是主键值。...建立学生和班级表之间的连接 t_student中的classno字段引用t_class表中的cno字段,此时t_student表叫做子表。t_class表叫做父表。
站在正常的业务逻辑中: 如果班级没有名字,你不知道你在哪个班级 如果教室名字可以为空,就不知道在哪上课 所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。...>insert into myclass (class_name) values ('高三三班'); ERROR 1364 (HY000): Field 'class_room' doesn't have...ERROR 1364 (HY000): Field 'name' doesn't have a default value mysql> insert into t13 (name,age,gender...,用的是default,如果建表中对应列默认没有设置default值,将无法插入。...default是作用在用户忽略了这一列的时候,如果设置了使用默认值,如果没有设置,直接报错。 如果我们在建表时没有设置默认值,mysql会对我们的表进行优化。
在 MySQL 中,IGNORE 是一种在插入或更新数据时处理冲突的选项。...具体来说,在 INSERT | UPDATE 语句中,IGNORE 的作用是在插入或更新数据时忽略特定的错误,而不导致整个操作失败。...忽略非空约束 2.1 列出字段赋值为null时 当列出需赋值的字段,但是对其中的非空字段赋值为null时,结果如下: mysql> select * from test1; +----+------...,情况如下: mysql> insert into test1(id,name,c1) values (8,'aaa','aa'); ERROR 1364 (HY000): Field 'card_no...> 结果:此时插入了0 (整型的默认值)。
前言 我们知道网页有他的状态码,比如最常见的404,500。都有他自己的含义,但是,在MySQL数据库里面也有他们的一个错误码,相信很多同学见过但是没有注意到吧。...,也没有默认值,那肯定是会出错,返回的错误码是1364,返回的错误信息是xxx字段没有默认值 解决方法:那么给设置一个默认值,或者给另外一个设置一个自增就可以不需要设置了 那么就给id设置一个自增吧 [...是存在字段没有默认值 4.1054 我们知道这个表的字段是id和name,那我要是插入数据的时候,插入的是不同字段名呢 我插入的字段改成username,运行 [5b34088971982852e1c3813ddf458c5d.png...我数据库test中没有user这个表,那我要执行查询user的表,会发生什么呢?...,不同的数据库是可以有同名的表的,所以可能其他数据库有user表,但是数据库test没有,你在数据库test中对这个user表进行操作的时候就会出现这样的错误 解决方法: 1.检查数据库名有没有写错,如果写错了就改成正确的名字
如果被零除(或MOD(X,0)),则产生错误 - - SQL语法支持类ONLY_FULL_GROUP_BY对于GROUP BY聚合操作,如果在SELECT中的列、HAVING或者ORDER BY子句的列...数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。...用于事物时,会进行事物的回滚。日期类型中的月和日部分不能包含0,不能有0这样的日期(0000-00-00),数据不能除0,禁止grant自动创建新用户等一些校验。...测试插入非空字段不带值,直接报错 (root@localhost) [test] >insert into test_4(id) values(6); ERROR 1364 (HY000): Field...,没有在GROUP BY中出现,那么将认为这个SQL是不合法的,因为列不在GROUP BY从句中。
1 – 255,假设没有BINARY项,则不分大写和小写,NCHAR表示使用缺省的字符集.在数据库 中以空格补足,但在取出来时末尾的空格将被去掉....table emp 中的全部资料,即使 emp_dept 中没有的资料也挑出来,没有的就用 NULL 来显示, # 也即显示资料是以左边的 table emp 中的资料为基础 mysql> select...:连接数据库失败,没有连接数据库的权限 1133:数据库用户不存在 1141:当前用户无权訪问数据库 1142:当前用户无权訪问数据表 1143:当前用户无权訪问数据表中的字段 1146...:数据表不存在 1147:没有定义用户对数据表的訪问权限 1149:SQL语句语法错误 1158:网络错误,出现读错误,请检查网络连接状况 1159:网络错误,读超时,请检查网络连接状况...1160:网络错误,出现写错误,请检查网络连接状况 1161:网络错误,写超时,请检查网络连接状况 1062:字段值反复,入库失败 1169:字段值反复,更新记录失败 1177:打开数据表失败
,会发现id2字段会使用默认值填充 mysql> insert into t13 (id1) values (111); Query OK, 1 row affected (0.00 sec) mysql...,所以不能单独向id2字段填充值; mysql> insert into t13 (id2) values (223); ERROR 1364 (HY000): Field 'id1' doesn't...have a default value # 向id1,id2中分别填充数据,id2的填充数据会覆盖默认值 mysql> insert into t13 (id1,id2) values (112,223...设置严格模式: 不支持对not null字段插入null值 不支持对自增长字段插入”值 不支持text字段有默认值 直接在mysql中生效(重启失效): mysql>set sql_mode...返回顶部 PRIMARY KEY 主键为了保证表中的每一条数据的该字段都是表格中的唯一值。换言之,它是用来独一无二地确认一个表格中的每一行数据。 主键可以包含一个字段或多个字段。
1问题背景 同事咨询了一个问题,TDSQL(for MySQL)中的某张表主键需要改为联合主键,是否必须先删除现有的主键?因为删除主键时,提示这个错误。...,当设置了 sql_require_primary_key 参数,不能创建或改变一张没有主键的表。...解决方案是增加主键或者删除此参数避免错误,同时提醒了,如果表无主键,可能会导致基于行的复制产生性能问题。 sql_require_primary_key 参数控制的是强制检查主键,可以动态修改。...alter 语句时,对已存在的表进行修改,将会强制检查表中是否包含主键,如果没有主键,则会报错。...,就是删除主键,再创建主键的这段时间内,如果有主键字段的重复数据插入,就可能导致创建新的主键不成功。
安装 这里安装的是最新的MySQL 5.7.10(5.7.12、5.7.13(后续更新版本可能类似)有些区别,安装过程中遇到错误可搜索下本文,也许可以找到解决办法),下载网址为:http://dev.mysql.com...对于mysql-5.7.13,mysql.server中的mysqld_pid_file_path默认值为$datadir/`hostname`.pid,而mysqld的--pid-file参数值为/var...常见错误 1) ERROR 1862 (HY000): Your password has expired. ...原因是从MySQL 5.6版本开始,timestamp的默认值已被标为deprecated,即如果类型为timestamp的字段,如果没有明确声明默认值为NULL,则默认为NOT NULL。...如果设置timestamp字段为NULL,则自动存储当前的timestamp。
,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。...(简称FK) 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。...ERROR 1364 (HY000): Field 'username' doesn't have a default value insert into t_user(id,username,password...1.15.5 外键约束 关于外键约束的相关术语: 外键约束:foreign key 外键字段:添加有外键约束的字段 外键值:外键字段中的每一个值。...A表中的字段引用B表中的字段,则A是子表,B是父表 删除数据的时候,先删除子表,再删除父表。添加数据的时候,先添加父表,再添加子表。创建表的时候,先创建父表,再创建子表。
: MySQL server has gone away 02 思路一 看到这个错误,我的第一反应是那两个timeout参数,分别是wait_timeout和interactive_timeout...,类似mysql客户端这种连接,默认值也是8小时。...如果连接的闲置时间大于这两个参数值,那么对应的连接将会被打断。经过查看,这两个参数的值都没有人为改变过,都是28800,也就是8小时。看来这个错误,和这两个参数的关系不大。...摘取了几个关键部分如下: 1、该参数的默认值是4MB,小的默认值是为了过滤那些比较大的通信包(过大的通信包被认为是有问题的) 2、当表中存在blob字段的时候,通常需要增加这个参数值,通信协议限制该参数的最大值为...4、mysql客户端上这个参数默认值是16M,mysqldump客户端上这个参数默认值是24M 看到这里,我做了个实验,先将server端的值改大点试试, set global max_allowed_packet
站在正常的业务逻辑中: 如果班级没有名字,你不知道你在哪个班级 如果教室名字可以为空,就不知道在哪上课 所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。...: mysql> insert into myclass(class_name) values('class1'); ERROR 1364 (HY000): Field 'class_room' doesn't...:数据在插入的时候不给该字段赋值,就使用默认值 mysql> insert into tt10(name) values('zhangsan'); Query OK, 1 row affected (0.00...第二个a(紧跟在CHANGE关键字后的两个参数中的第二个):这是修改后列的新名称(在这个特定情况下,它仍然是a,意味着列名没有改变)。...,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值 +1操作,得到一个新的不同的值。
首先,找到xampp的安装目录,打开htdocs: 新建一个php文件,名称为 mysqladmin.php 1.编写php服务器代码 1.1 写上php标签 首先,还是在这个页面,要写php代码,...1.2 数据库连接操作 xampp安装的mysql默认没有密码,不写就行。...1.5 用split函数分割sql语句,获取表名 1.6 通过表名去获取这张表所有的列,并且把列名用一个数组装起来 1.7 去查询sql中获取的结果集,展示到页面 if($tableName){...'>sql报错,错误信息为 ======> ".mysql_error()."...($query_origin)){ //遍历这张表的列名,然后对应从行中取值 for($i=0;$i<sizeof($columns);$