首页
学习
活动
专区
圈层
工具
发布

为 MySQL 加字段,我竟然遇史诗级 Bug?

“ 当然这只是牛马打工人的幻想,活是要干的,态度也是要诚恳的。以我的数据库运维经验来看 SO EASY~,这不妥妥就是加了个带唯一约束的字段,字段里面有重复数据导致的报错么。...生产环境能给大家看的就只有这么多了,但相信对各位 “彦祖” 来说足够看出问题了: 这就是个普通的加字段操作 加的字段和报重复值的字段不一样 但对我来说,乍一看就只看到了 duplicate key,第一反应就是看该字段是否有重复值... varchar(); Query OK, 0 rows affected (1 min 2.57 sec) Records: 0  Duplicates: 0  Warnings: 0 4....DML 时,理所当然会出现 duplicate entry 的错误了。...id=76895 本文关键字:#MySQL #DDL #报错

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

    MySQL 主从复制异常?试试 pt-slave-repair 吧!

    由于业务之前的不当操作,导致主从数据违反了唯一性约束,进而出现了 1062 错误。 痛点 这些问题,说起来大家都知道怎么回事,也知道怎么处理。...那么,针对频繁出现的 1032 和 1062 错误,今天就为大家介绍一款工具 pt-slave-repair[1] ,让大家花最小的成本来处理这个常见的主从故障问题。...当检测到同步报错 1062(主键冲突、重复)和 1032(数据丢失)时,首先要进行 binlog 环境检查,如果 binlog_format 不等于 ROW 并且 binlog_row_image 不等于...MySQL 主从复制 1062 错误的根本处理办法 1062错误主要是违反了已唯一性约束,在主从强一致性要求比较高的情况下,需要在从库删除主键冲突的这条数据。...Write_rows event on table test.t2; Duplicate entry '3' for key 'PRIMARY', Error_code: 1062; handler

    22510

    MYSQL 毛病那么多,optimize table 为什么做不了

    ,而引起这个问题的主要原因是,数据表中有唯一索引,而具备唯一索引的表,正在出入重复的数据时,导致的optimize table 的执行错误。...通过存储过程我们插入数据,在此同时我们写另一个存储过程不断的往test表中插入重复的数据,持续的插入,然后我们在另一个连接中,持续的运行optimize table。...name, empid) values (i, i, i); -> SET i = i+1; -> END WHILE; -> END -> // Query OK, 0...简单解释是因为,在optimize table 操作时会对唯一索引进行重新的整理,并且重新生成索引会对数据进行检查,当插入重复数据的时候,无法满足唯一约束条件,而导致OT操作失败。...当应用DML操作时,可能会遇到重复键条目错误(ERROR 1062 (23000):Duplicate entry),即使重复条目只是临时的,并且稍后会被在线日志中的另一个条目回滚。

    49010

    MySQL学习笔记汇总(四)——表的约束、存储引擎、事务

    常见的约束有哪些: 非空约束(not null):约束的字段不能为NULL 唯一约束(unique):约束的字段不能重复 主键约束(primary key):约束的字段既不能为NULL,也不能重复...,'111','zs');这个语句的usercode,username,重复!...NULL,也不能重复 主键相关的术语 主键约束 : primary key 主键字段 : id字段添加primary key之后,id叫做主键字段 主键值 : id字段中的每一个值都是主键值。...读已提交存在的问题是:不可重复读。 第三级别:可重复读(repeatable read) 这种隔离级别解决了:不可重复读问题。 这种隔离级别存在的问题是:读取到的数据是幻象。...mysql数据库默认的隔离级别是:可重复读。 一起加油,一起努力,一起秃见成效

    1.8K50

    MySQL 约束

    在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。...-----+ | NULL | +------+ 1 row in set (0.10 sec) 1.2 唯一(unique) 1.2.1 概述   唯一约束(Unique Key)是指所有记录中字段的值不能重复出现...例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为 “0001”,那么该表中就不能出现另一条记录的 id 值也为 “0001”。...一个表中只能有一个字段使用 AUTO_INCREMENT 约束,且该字段必须有唯一索引,以避免序号重复(即自动增长只能给 primary key 或者 unique 添加,一张表中只能添加一个)。...默认值约束通常用在已经设置了非空约束的列,这样能够防止数据表在录入数据时出现错误。

    3.3K31

    Python操作MySQL数据库

    ,那就要把所有字段的值都填上了, 语法:insert into tab_name values(val1,val2,val3,val4); MySQL数据库,插入重复数据 sql = "INSERT...“INSERT INTO” 插入数据,如果数据有重复就会有报错: 提示的是键值重复 Traceback (most recent call last): File "D:/python/tongbu_py...这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的 REPLACE INTO 如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。...AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。 PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。...反引号是为了区分 MySql 关键字与普通字符而引入的符号,一般的,表名与字段名都使用反引号。

    1.7K20

    MySQL之alter ignore 语法

    这个问题刚听到的时候,说白了我是不会的,因为没有遇到过这样的需求,要在一个重复字段上设置唯一性,必然有数据丢失啊,因为一个字段不可能及时唯一的,又有重复值。...于是我详细询问了一下他的需求,最终得知,这个过程中重复的数据只需要保存一条就可以了,可以容忍一部分数据丢失,而重复的字段恰好是时间字段,这样的话,只需要保证每个时间点都有一条记录即可。...`id` int(11) NOT NULL AUTO_INCREMENT, `age` int(11) DEFAULT NULL, `score` int(11) NOT NULL, PRIMARY...也就是alter table test的方法,发现有冲突的记录,然后我们该用alter ignore的方法,错误依旧保留,经过查询是少了一个参数,old_alter_table,要想成功实现去除重复记录并且添加唯一索引...这里需要注意的是,我的这个测试的环境是MySQL5.5.19,在MySQL5.7环境中,这个测试时不成功的,这种语法被标记为错误语法。所以这个方法只能在MySQL5.5版本中使用。

    4.1K20

    2024Mysql And Redis基础与进阶操作系列(3)作者——LJS

    它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。...唯一性约束 3.1 作用 用来限制某个字段/某列的值不能重复。 3.2 关键字 UNIQUE 3.3 特点 同一个表可以有多个唯一约束。 唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。...4.2 关键字primary key 4.3 特点 主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。...主键约束对应着表中的一列或者多列(复合主键) 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。...插入4个空值 INSERT INTO test1 VALUES(0),(0),(0),(0); 查询数据表test1中的数据 mysql> SELECT * FROM test1; +----+

    32410

    MySQL数据库表约束详解

    第二个a(紧跟在CHANGE关键字后的两个参数中的第二个):这是修改后列的新名称(在这个特定情况下,它仍然是a,意味着列名没有改变)。...通常,CHANGE子句用于在修改列的数据类型或其他属性时同时更改列名。如果您只想更改列的数据类型或属性而不更改列名,就像您的示例中所做的那样,您需要重复列名。...6.主键 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。...而唯一键更多的是保证在业务上,不要和别的信息出现重复。...而我们设计员工工号的时候,需要一种约束:而所有的员工工号都不能重复。 具体指的是在公司的业务上不能重复,我们设计表的时候,需要这个约束,那么就可以将员工工号设计成为唯一键。

    51800

    MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解

    它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL规范以约束的方式对 表数据进行额外的条件限制 。...唯一性约束 3. 1 作用 用来限制某个字段/某列的值不能重复。 3. 2 关键字 UNIQUE 3. 3 特点 同一个表可以有多个唯一约束。...4. 2 关键字 primary key 4. 3 特点 主键约束相当于 唯一约束+非空约束的组合 ,主键约束列不允许重复,也不允许出现空值。...主键约束对应着表中的一列或者多列(复合主键) 是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。 MySQL的主键名总是PRIMARY ,就算自己命名了主键约束名也没用。...( 23000 ): Duplicate(重复) entry(键入,输入) '1' for key 'PRIMARY' insert into temp values( 1 ,'王五');#失败 ERROR

    60210

    MySQL报错1062_mysql数据库报错

    slave-skip-errors的作用就是用来定义复制过程中从服务器可以自动跳过的错误号,当复制过程中遇到定义的错误号,就可以自动跳过,直接执行后面的SQL语句 mysql主从库同步错误:1062 Error...‘Duplicate entry ‘1438019’ for key ‘PRIMARY’’ on query mysql主从库在同步时会发生1062 Last_SQL_Error: Error ‘Duplicate...entry ‘的问题:显然这个问题是因为插入重复主键导致从库不工作了 一些error code代表的错误如下: 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1050...:数据表已存在,创建数据表失败 1051:数据表不存在,删除数据表失败 1054:字段不存在,或程序文件跟数据库有冲突 1060:字段重复,导致无法插入 1061:重复键名 1068:定义了多个主键...1094:位置线程ID 1146:数据表缺失,请恢复数据库 1053:复制过程中主服务器宕机 1062:主键冲突 Duplicate entry ‘%s’ for key %d 方法一:可以用这个跳过错误

    2.4K30

    MySQL:binlog复制过程中的错误跳过机制及其应用

    MySQL是一种广泛使用的关系数据库管理系统,提供了强大的数据复制功能,以确保数据的可靠性和一致性。然而,在复制过程中可能会遇到某些错误,这些错误可能会中断复制进程,影响到系统的正常运行。...这意味着,如果从服务器在复制过程中遇到错误码1032或1062,它将跳过这些错误,并继续复制进程。 2. 错误码的含义 错误码1032代表“无法找到记录”。 错误码1062代表“对于键是重复条目”。...这些错误可能是由于在主服务器上的数据与从服务器上的数据不一致所引起的。 3....= '1032,1062'; 此命令将全局设置replica_skip_errors变量,从而在复制过程中跳过错误码1032和1062。...官方错误码文档 了解所有可能的MySQL错误码及其含义是非常重要的,这将帮助你更好地理解和解决可能遇到的问题。你可以在MySQL的官方文档中找到所有错误码的列表和描述: 5.

    73210

    第13章_约束

    它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL 规范以约束的方式对表数据进行额外的条件限制。...唯一性约束 # 3.1 作用 用来限制某个字段 / 某列的值不能重复。 # 3.2 关键字 UNIQUE # 3.3 特点 同一个表可以有多个唯一约束。...# 4.2 关键字 primary key # 4.3 特点 主键约束相当于唯一约束 + 非空约束的组合,主键约束列不允许重复,也不允许出现空值。...主键约束对应着表中的一列或者多列(复合主键) 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。...(23000): Duplicate(重复) entry(键入,输入) '1' for key 'PRIMARY' insert into temp values(1,'王五');#失败 ERROR

    68530

    【重学 MySQL】八十、掌握定义条件与处理程序,让数据库管理更高效!

    特点:这些代码是MySQL数据库系统内部定义的,用于标识和记录各种可能的错误。它们通常是数字形式的,例如 1062 表示重复键错误。...在这里,1062 是 MYSQL_error_code,表示重复键错误;23000 是对应的 sqlstate_value。...在这里,23000 是 sqlstate_value,表示完整性约束错误(即重复键错误);1062 是对应的MySQL错误代码。...1012:不能读取系统表中的记录。 1020:记录已被其他用户修改。 1021:硬盘剩余空间不足,请加大硬盘可用空间。 1022:关键字重复,更改记录失败。...'45000'; 定义一个名为 duplicate_entry 的条件,对应 MySQL 错误代码 1062(表示重复键错误): DECLARE duplicate_entry CONDITION FOR

    31110
    领券