在提交注册信息的时候报错:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'admin' for key 'username...' 原因:主键冲突 违反完整性约束 字段唯一索引 从上图可以看出,用户名和邮箱必须唯一,如果填入重复的用户名或者邮箱就会出错 解决方法:在控制器里面进行判断 data=input(′post.′);data
SQLSTATE:针对特定SQLSTATE类(如'23000',表示完整性约束违规)的处理程序优先级次之。 SQLEXCEPTION:最通用的处理程序,用于捕获所有SQL异常,优先级最低。...'23000'(完整性约束违规) DECLARE EXIT HANDLER FOR SQLSTATE '23000' BEGIN SELECT 'SQLSTATE...SQLSTATE '23000':是一个通用的SQLSTATE值,用于表示完整性约束违规,包括重复键错误。...(如违反唯一约束) DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @processed = 100; -- 内部块开始 BEGIN...的异常处理 DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' BEGIN -- 处理完整性约束违规 END; -- 命名条件的错误处理 DECLARE
在提交注册信息的时候报错:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘admin’ for key ‘username...’ 原因:主键冲突 违反完整性约束 字段唯一索引 从上图可以看出,用户名和邮箱必须唯一,如果填入重复的用户名或者邮箱就会出错 解决方法:在控制器里面进行判断 $data = input('post.
在这里,1062 是 MYSQL_error_code,表示重复键错误;23000 是对应的 sqlstate_value。...使用 sqlstate_value 表示:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'xxx' for...在这里,23000 是 sqlstate_value,表示完整性约束错误(即重复键错误);1062 是对应的MySQL错误代码。...1216:外键约束检查失败,更新子表记录失败。 1217:外键约束检查失败,删除或修改主表记录失败。...示例 定义一个 CONTINUE 处理程序,当发生 SQLSTATE ‘23000’(表示约束违反)时,输出一条消息: DECLARE CONTINUE HANDLER FOR SQLSTATE '23000
· 错误:1216 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW) 消息:无法添加或更新子行,外键约束失败。...· 错误:1217 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED) 消息:无法删除或更新父行,外键约束失败。...· 错误:1223 SQLSTATE: HY000 (ER_CANT_UPDATE_WITH_READLOCK) 消息:由于存在冲突的读锁定,无法执行查询。...· 错误:1451 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED_2) 消息:不能删除或更新父行,外键约束失败(%s)。...· 错误:1452 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW_2) 消息:不能添加或更新子行,外键约束失败(%s)。
1 MySQL约束 1. 约束(constraint)概述 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。...为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。...从以下表格四个方面考虑: 实体完整性(Entity Integrity) 例如,同一个表中,不能存在两条完全相同无法区分的记录 域完整性(Domain Integrity) 例如:年龄范围0-120,性别范围...如果删除主键约束了,主键约束对应的索引就自动删除了。 需要注意的一点是,不要修改主键字段的值。因为主键是数据记录的唯一标识,如果修改了主键的值,就有可能会破坏数据的完整性。...如果删除主键约束了,主键约束对应的索引就自动删除了。 需要注意的一点是,不要修改主键字段的值。 因为主键是数据记录的唯一标识, 如果修改了主键的值,就有可能会破坏数据的完整性。
1181:回滚事务失败 1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库 1205:加锁超时 1211:当前用户没有创建用户的权限 1216:外键约束检查失败...,更新子表记录失败 1217:外键约束检查失败,删除或修改主表记录失败 1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器 1227:权限不足,您无权进行此操作 1235:...冲突声明:’%s%s’和’%s%s’ 错误:1303 SQLSTATE: 2F003 (ER_SP_NO_RECURSIVE_CREATE) 消息:不能从另一个存储子程序中创建%s。...错误:1451 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED_2) 消息:不能删除或更新父行,外键约束失败(%s)。...错误:1452 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW_2) 消息:不能添加或更新子行,外键约束失败(%s)。
因为id属性有主键约束,所以不能插入相同的id。...'23000'; -- 主键约束的错误值 DECLARE CONTINUE HANDLER FOR primary_key_limit SET @info = -1; -- 设计如果出现错误...另外,第二次插入记录,因为违反了主键约束,所以插入失败,但是存储过程仍然继续执行完毕。...'23000'; -- 主键约束的错误值 DECLARE EXIT HANDLER FOR primary_key_limit SET @info = -1; -- 使用EXIT策略,遇到SQL...'23000'; -- 主键约束的错误值 DECLARE EXIT HANDLER FOR primary_key_limit SET @info = -1; -- 设计如果出现错误,@info
类代码 23 约束违例 表 18. 类代码 23:约束违例 SQLSTATE 值 含义23001 RESTRICT 更新或删除规则防止父键被更新或删除。...类代码 40:事务回滚 SQLSTATE 值 含义40001 发生了伴随自动回滚的超时或死锁。40003 语句完整性未知。40504 由于系统错误导致工作单元被回滚。...类代码 40:事务回滚 SQLSTATE 值 含义 40001 发生了伴随自动回滚的超时或死锁。 40003 语句完整性未知。 40504 由于系统错误导致工作单元被回滚。...42867 指定了冲突的选项。 42872 FETCH 语句子句与游标定义不兼容。 42875 要在 CREATE SCHEMA 中创建的对象的限定符必须与模式名相同。 42877 不能限定该列名。...428A8 在父表或底层的表处于设置完整性暂挂状态时,不能对派生表使用 SET INTEGRITY 语句复位设置完整性暂挂状态。 428A9 节点范围无效。
概述 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。...表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。...约束的最终目标:保证数据的完整性和可预期性所以需要更多的约束。...> insert into t14 (name,age) values ('张三',20); Query OK, 1 row affected (0.00 sec) default和NOT NULL不冲突...我们选择某一列作为主键,但是并不排除其他属性不需要维护,可能需要用到唯一键来限定,选择其他列作为唯一键,与主键配合起来,能够保证一些数据冲突。
约束 (constraint) 概述 # 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。...为了保证数据的完整性,SQL 规范以约束的方式对表数据进行额外的条件限制。...从以下四个方面考虑: 实体完整性(Entity Integrity) :例如,同一个表中,不能存在两条完全相同无法区分的记录 域完整性(Domain Integrity) :例如:年龄范围 0-120,...如果删除主键约束了,主键约束对应的索引就自动删除了。 需要注意的一点是,不要修改主键字段的值。因为主键是数据记录的唯一标识,如果修改了主键的值,就有可能会破坏数据的完整性。...FOREIGN KEY 约束 # 6.1 作用 限定某个表的某个字段的引用完整性。 比如:员工表的员工所在部门的选择,必须在部门表能找到对应的部分。
MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解 前言 在MySQL数据库中,约束是一种对数据表中数据进行限制和检查的方法,可以保证数据表中数据的完整性和一致性。...通过本文的学习,读者可以更好地了解MySQL中数据表约束的相关知识和技巧,合理使用约束来保证数据表的完整性和一致性。 第 13 篇_约束 1....约束(constraint)概述 1. 1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。...为了保证数据的完整性,SQL规范以约束的方式对 表数据进行额外的条件限制 。...AUTO_INCREMENT的值如果大于max(primary key)+1,在MySQL重启后,会重置AUTO_INCREMENT=max(primary key)+1,这种现象在某些情况下会导致业务主键冲突或者其他难以发现的问题
确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录 FOREIGN KEY: 保证一个表中的数据匹配另一个表中的值的参照完整性 看不懂???...添加时进行约束: mysql> insert into test99 values(1,'孙悟空'),(null,'唐三藏'); ERROR 1048 (23000): Column 'id' cannot...和上述添加一样,修改时也会进行约束; 修改时约束: mysql> update test99 set id=null where name='孙悟空'; ERROR 1048 (23000): Column...sec) 4.1添加数据约束 这里在第二次添加数据时,会进行约束 mysql> insert into student values(1,'孙悟空'),(1,'猪八戒'); ERROR 1062 (23000...代码如下: mysql> insert into student values(1,'猪八戒'),(null,'孙悟空'),(1,'沙悟净'); ERROR 1048 (23000): Column
'Abel'; SET @x = 3; END // DELIMITER ; 调用存储过程: mysql> CALL UpdateDataNoCondition(); ERROR 1048 (23000...** 举例 1:** 定义 “Field_Not_Be_NULL” 错误名与 MySQL 中违反非空约束的错误类型是 “ERROR 1048 (23000)” 对应。...CONDITION FOR SQLSTATE '23000'; ** 举例 2:** 定义 "ERROR 1148 (42000)" 错误,名称为 command_not_allowed。...在存储过程中,定义处理程序,捕获 sqlstate_value 值,当遇到 sqlstate_value 值为 23000 时,执行 EXIT 操作,并且将 @proc_value 的值设置为 - 1。...'23000' ; DECLARE EXIT HANDLER FOR duplicate_entry SET @proc_value = -1; SET @x = 1; INSERT
在 MySQL 中,IGNORE 是一种在插入或更新数据时处理冲突的选项。...另外,IGNORE 选项还可以在非空约束、写入的字段内容超过字段长度时进行截断处理等,下面是几个具体的例子。 1....,但是进行了warning提示,然后继续进行其他无冲突项的处理。...,有冲突的数据将会忽略告警而继续进行后续操作。...结语 总的来说,IGNORE 提供了一种在插入或更新时处理主键、唯一键冲突、非空约束字段未赋值、字段超长等异常时内部自动处理的方法,使得操作不因为某一行的冲突而中断,而是继续处理。
特殊情况处理 在串行化事务中,即使预先检查了唯一性约束,仍有可能发生冲突,尤其是在并发插入相同数据时。 为避免这类问题,所有可能引发冲突的事务在执行前应再次确认数据状态。...尽管可重复读(Repeatable Read)事务在整个执行过程中拥有稳定的数据视图,但使用MVCC快照进行数据一致性检查时存在读/写冲突的微妙问题,可能导致事务执行顺序的循环,影响完整性检查。...这类失败的SQLSTATE代码是40P01(deadlock_detected)。...在某些情况下,重试唯一键失败(SQLSTATE代码23505,unique_violation)和排除约束失败(SQLSTATE代码23P01,exclusion_violation)也是合适的。...还有一些特殊情况,即使理论上服务器有足够的信息判断序列化问题是根本原因,它仍会发出唯一键或排除约束错误。
1.表的约束的概念 表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。...反过来,站在MySQL的视角,凡是插进来的数据,都是符合数据约束的! 约束的最终目标:保证数据的完整性和可预期性! 下面来介绍一些主流的约束。..., 'aaa'); Query OK, 1 row affected (0.00 sec) mysql> insert into tt13 values(1, 'aaa'); ERROR 1062 (23000...): Duplicate entry '1-123' for key 'PRIMARY' -- 主键冲突 自增长: auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值...ERROR 1062 (23000): Duplicate entry '01' for key 'id' mysql> insert into student(id, name) values(null
sqlstate_value是长度为 5 的字符串类型错误代码。...举例 1 : 定义“Field_Not_Be_NULL”错误名与MySQL中违反非空约束的错误类型是“ERROR 1048 (23000)”对应。...CONDITION FOR SQLSTATE '23000'; 举例 2 : 定义"ERROR 1148(42000)"错误,名称为command_not_allowed。...在存储过程中,定义处理程序,捕获sqlstate_value值,当遇到sqlstate_value值为 23000 时,执行EXIT操作,并且将@proc_value的值设置为-1。...'23000' ; DECLARE EXIT HANDLER FOR duplicate_entry SET @proc_value = -1; SET @x = 1; INSERT INTO departments
存储过程 3、执行Proc() 存储过程 ❝注意:“DELIMITER //”语句的作用是将MySQL的结束符设置为//,因为MySQL默认的语句结束符为分号;,为了避免与存储过程」 中SQL语句结束符相冲突...SQLWARNING表示所有以01开头的sqlstate_value值。 NOT FOUND表示所有以02开头的sqlstate_value值。...第一种方法是捕获sqlstate_value值。如果遇到sqlstate_value值为42000,执行CONTINUE操作,并且输出"CAN NOT FIND"信息。...'23000' SET @X2=1; SET @X=1; INSERT INTO t8 VALUES(1); SET @X=2; INSERT INTO t8 VALUES(1); SET @X=3;...如果DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @X2=1;,这一行不存在 第二个INSERT因PRIMARY KEY约束而失败之后,MySQL可能已经采取
一、表的约束 在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。...(2,'zhangsan'); ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 'username' insert into t_user...insert into t_user values(3,'222','zs'); insert into t_user values(4,'111','zs'); ERROR 1062 (23000...ww@123.com'); insert into t_user(id,username,email) values(1,'jack','jack@123.com'); ERROR 1062 (23000...username varchar(255) ); 外键约束:foreign key 外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键 字段,那么该字段的值必须来源于参照的表的主键
领取专属 10元无门槛券
手把手带您无忧上云