问题场景 先来看个场景: 执行一条插入语句,因为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或
错误: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’基本表的字段没有默认值。...错误:1449 SQLSTATE: HY000 (ER_NO_SUCH_USER) 消息:没有注册的 %s@%s 。...错误:1462 SQLSTATE: HY000 (ER_FIELD_NOT_FOUND_PART_ERROR) 消息:在表中未发现分区函数字段列表中的字段。
· 错误: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'基本表的字段没有默认值。
不仅仅是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后,会自动设置一个没有用的默认值...,导致系统数据错误。
(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
'HY000' SET message_text = msg; 如果该SIGNAL语句指示特定SQLSTATE值,则该值用于表示指定的条件 “HY000”被称为“一般错误”: 如果命令出现一般错误,则会触发后面的...; SELECT NEW.order_num into @a; 在虚表中找到我们插入的数据的编号,将标号保存在a变量中; 检测: insert INTO orders(order_date,cust_id...EACH ROW SET new.vend_state =UPPER(new.vend_state); UPDATE vendors SET vend_state='hw' where vend_id...='1001'; DROP TRIGGER UPDATEevendor; 注:upper:将文本转换为大写: 例二:不允许修改student表中的学号sno,如果修改该列则显示错误信息并取消操作。...) VALUES(old.order_num,old.order_date,old.cust_id); END 解释: 在删除order表中行中信息时,将删除的信息保存到archive_orders中;
MySQL_error_code 是数值类型错误代码。 sqlstate_value 是长度为 5 的字符串类型错误代码。...例如,在 ERROR 1418 (HY000) 中,1418 是 MySQL_error_code,'HY000’是 sqlstate_value。...错误类型(即条件)可以有如下取值: SQLSTATE '字符串错误码' :表示长度为 5 的 sqlstate_value 类型的错误代码; MySQL_error_code :匹配数值类型错误代码;...SQLWARNING :匹配所有以 01 开头的 SQLSTATE 错误代码; NOT FOUND :匹配所有以 02 开头的 SQLSTATE 错误代码; SQLEXCEPTION :匹配所有没有被...FETCH cur_emp INTO emp_id, emp_sal ; 注意:游标的查询结果集中的字段数,必须跟 INTO 后面的变量数一致,否则,在存储过程执行的时候,MySQL 会提示错误。
1,问题描述 最近建了个 Laravel 项目,当配置好 MySQL 数据库进行请求时,页面报如下错误: SQLSTATE[HY000] [2054] The server requested authentication...method unknown to the client (SQL: select * from user where id = 3) Previous exceptions SQLSTATE[HY000...由于我用的是 mac 电脑,安装后默认是没有这个配置文件的,执行如下命令添加配置文件: 1 sudo vi /etc/my.cnf (2)按下 i 进入编辑模式,添加如下内容(把加密模式改成旧的
SELECT语句从employee表查询num值等于emp_id的记录,并将该记录的name字段的值返回。...value,没有使用DEFAULT子句时,默认值为NULL。...【示例3】 下面定义变量my_sql,数据类型为INT型,默认值为10。...SQLEXCEPTION表示所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值。sp_statement表示一些存储过程或函数的执行语句。...SQLEXCEPTION捕获所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值,然后执行EXIT操作,并且输出"ERROR"信息。
SELECT语句从employee表查询num值等于emp_id的记录,并将该记录的name字段的值返回。...value,没有使用DEFAULT子句时,默认值为NULL。...【示例14-3】 下面定义变量my_sql,数据类型为INT型,默认值为10。...SQLEXCEPTION表示所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值。sp_statement表示一些存储过程或函数的执行语句。...SQLEXCEPTION捕获所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值,然后执行EXIT操作,并且输出"ERROR"信息。
; mysql> delete from student where s_id = 1003; ERROR 1644 (HY000): 不允许删除学生信息 # 禁止更新某个字段 mysql> delimiter... OLD.s_id THEN -> SET msg='不允许修改学号'; -> SIGNAL SQLSTATE 'HY000' SET message_text = msg;...= 1002 where increment_id = 2; ERROR 1644 (HY000): 不允许修改学号 # 限制修改范围 mysql> delimiter // mysql> CREATE...msg VARCHAR(20); -> IF (NEW.s_age<0) THEN -> set msg="年龄不能小于0"; -> signal sqlstate...= 1001; ERROR 1644 (HY000): 年龄不能小于0 总结: 本篇文章简要介绍了触发器的定义及使用案例。
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字段中的每一个值都是主键值。
定义条件使用DECLARE语句,语法格式如下: DECLARE 错误名称 CONDITION FOR 错误码(或错误条件) 错误码的说明: MySQL_error_code和sqlstate_value...MySQL_error_code是数值类型错误代码。 sqlstate_value是长度为 5 的字符串类型错误代码。...例如,在ERROR 1418 (HY000)中, 1418 是MySQL_error_code,'HY000’是sqlstate_value。...错误类型 (即条件)可以有如下取值: SQLSTATE ‘字符串错误码’:表示长度为 5 的sqlstate_value类型的错误代码; MySQL_error_code:匹配数值类型错误代码; 错误名称...SQLWARNING:匹配所有以 01 开头的SQLSTATE错误代码; NOT FOUND:匹配所有以 02 开头的SQLSTATE错误代码; SQLEXCEPTION:匹配所有没有被SQLWARNING
: 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,没人告诉我错误就寄了。
代码举例 举例1: 1、创建数据表: CREATE TABLE test_trigger ( id INT PRIMARY KEY AUTO_INCREMENT, t_note VARCHAR(30...触发器'); 4、查看test_trigger_log数据表中的数据 mysql> SELECT * FROM test_trigger_log; +----+---------------+ | id...2: 定义触发器“salary_check_trigger”,基于员工表“employees”的INSERT事件,在INSERT之前检查将要添加的新员工薪资是否大于他领导的薪资,如果大于领导薪资,则报sqlstate_value...为’HY000’的错误,从而使得添加失败。...= NEW.manager_id; IF NEW.salary > mgrsalary THEN SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '薪资高于领导薪资错误
'000000' WITH GRANT OPTION ; ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number...iptables stop Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY' 【报错原因】 主键没有设置自动增长...NO_ENGINE_SUBSTITUTION'; Query OK, 0 rows affected (0.00 sec) Data too long for column 'matter' at row 1 【报错原因】 1数据库表里面的字段长度过少...清除日志文件 SQLSTATE[HY093]: Invalid parameter number: parameter was not defined 【报错原因】 PHP查询绑定参数的问题 【解决办法...】 //问号占位符 Db::query("select * from think_user where id=?
代码举例3 定义触发器“salary_check_trigger”,基于员工表“employees”的INSERT事件,在INSERT之前检查将要添加的新员工薪资是否大于他领导的薪资,如果大于领导薪资,则报sqlstate_value...为'HY000'的错误,从而使得添加失败。...= NEW.manager_id; IF NEW.salary > mgrsalary THEN SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '薪资高于领导薪资错误...我用下面的代码演示一下 结果显示,系统提示错误,字段“aa”不存在。 这是因为,触发器中的数据插入操作多了一个字段,系统提示错误。...说不定你还会给会员信息表添加一个叫“aa”的字段,试图解决这个问题,结果只能是白费力。 2、相关数据的变更,可能会导致触发器出错。
具体来说,在 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 (整型的默认值
DEFAULT value:子句给变量提供一个默认值。该值除了可以被声明为一个常数之外,还可以被指定为一个表达式。 如果没有Default子句,变量的初始值为null。...sqlstate_value和 mysql_error_code:**都可以表示MySQL的错误。 sqlstate_value:表示长度为5的字符串类型的错误代码。...可以有 SQLSTATE[VALUE]sqlstate_value:包含5个字符的字符串错误值。 condition_name:表示DECLARE CONTINUE 定义的错误条件名称。...SQLWARNING:匹配所有以01开头的SQLSTATE错误代码。 NOT FOUND:匹配所有以02开头的SQLSTATE错误代码。...SQLEXCEPTION:匹配所有没有被SQLWARING和NOT FOUND捕获的SQLSTATE错误代码。 mysql_error_code:匹配数值类型错误代码。
领取专属 10元无门槛券
手把手带您无忧上云