问题场景 先来看个场景: 执行一条插入语句,因为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) 消息:在表中未发现分区函数字段列表中的字段。
· 错误: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) 消息:在表中未发现分区函数字段列表中的字段。
不仅仅是DUPLICATE KEY INSERT IGNORE不仅仅会忽略DUPLICATE KEY错误,也会忽略非空错误 数据库有表student如下: mysql> show create table...row in 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...tenmao | 0 | | 2 | | 1 | +----+--------+----------+ 2 rows in set (0.00 sec) 字段...NOT NULL是为了防止插入时漏掉这个字段,但是使用INSERT IGNORE后,会自动设置一个没有用的默认值,导致系统数据错误。
(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
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 进入编辑模式,添加如下内容(把加密模式改成旧的
定义条件使用 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 :匹配所有没有被
: 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,没人告诉我错误就寄了。
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"信息。
= (byte) '#'; private static final byte[] DEFAULT_SQLSTATE = "HY000".getBytes(); public byte...[] sqlState = DEFAULT_SQLSTATE; public byte[] message; } Select和ResultSet报文 如果执行的SQL是select语句,则返回的报文比较复杂...每一行(row)又分好field_count个字段,这个field_count将会在比Row还高一层的Result格式中描述,下面有详解。...每一个字段都是一个length-value对,length长度是3byte,其读取方法很特殊,现在直接用代码表述: public int readUB3() { final byte...Step5:如果读到任何一个error包后,此此读取结束,抛出错误。
255) not null, password varchar(255) ); insert into t_user(id,password) values(1,'123'); ERROR 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,也不能重复 主键相关的术语 主键约束
定义条件使用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
】 【解决示例】 ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number 【报错原因】 语句中的password...'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查询绑定参数的问题 【解决办法
为'HY000'的错误,从而使得添加失败。...mgrsalary FROM employees WHERE employee_id = NEW.manager_id; IF NEW.salary > mgrsalary THEN SIGNAL SQLSTATE...'HY000' SET MESSAGE_TEXT = '薪资高于领导薪资错误'; END IF; END // DELIMITER ; 上面触发器声明过程中的NEW关键字代表INSERT添加语句的新记录...我用下面的代码演示一下 结果显示,系统提示错误,字段“aa”不存在。 这是因为,触发器中的数据插入操作多了一个字段,系统提示错误。...说不定你还会给会员信息表添加一个叫“aa”的字段,试图解决这个问题,结果只能是白费力。 2、相关数据的变更,可能会导致触发器出错。
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)怎么添加默认值约束? 方式一:创建表的时候,给字段添加默认值。
学习PDO中的错误与错误处理模式 在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢...mysql:host=127.0.0.1;port=3306;dbname=blog_test1', 'root', ''); // Fatal error: Uncaught PDOException: SQLSTATE...[HY000] [1049] Unknown database 'blog_test1' blog_test1 表并不存在,所以在 new PDO 的时候就已经直接会抛出异常了。...ATTR_ERRMODE, PDO::ERRMODE_WARNING); $pdo->query('select * from aabbcc'); // Warning: PDO::query(): SQLSTATE...PDO::ERRMODE_EXCEPTION); $pdo->query('select * from aabbcc'); // Fatal error: Uncaught PDOException: SQLSTATE
具体来说,在 INSERT | UPDATE 语句中,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...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元无门槛券
手把手带您无忧上云