### @1=35313 /* LONGINT meta=0 nullable=0 is_null=0 */ ### @2='XXXXXXX' /* STRING(96) meta=65120 nullable=0 is_null=0 */ ### @3=1 /* TINYINT meta=0 nullable=0 is_null=0 */ ### @4=0 /* LONGINT meta=0 nullable=0 is_null=0 */ ### @5=0 /* INT meta=0 nullable=0 is_null=0 */ ### @6=0 /* LONGINT meta=0 nullable=0 is_null=0 */ ### @7=0 /* INT meta=0 nullable=0 is_null=0 */ ### @8=0 /* INT meta=0 nullable=0 is_null=0 */ ### @9=0 /* INT meta=0 nullable=0 is_null=0 */ ### @10=0 /* TINYINT meta=0 nullable=0 is_null=0 */ ### @11=0 /* INT meta=0 nullable=0 is_null=0 */ ### @12=3150 /* INT meta=0 nullable=0 is_null=0 */ ### @13=0 /* INT meta=0 nullable=0 is_null=0 */ ### @14=0 /* INT meta=0 nullable=0 is_null=0 */ ### @15=0 /* INT meta=0 nullable=0 is_null=0 */ ### @16=0 /* INT meta=0 nullable=0 is_null=0 */ ### @17=0 /* INT meta=0 nullable=0 is_null=0 */ ### @18=0 /* INT meta=0 nullable=0 is_null=0 */ ### @19=0 /* INT meta=0 nullable=0 is_null=0 */ ### @20=0 /* TINYINT meta=0 nullable=0 is_null=0 */ ### @21=0 /* TINYINT meta=0 nullable=0 is_null=0 */ - 操作的ad_id已经存在,是以先删除后插入,可以看到除了指定的 ad_id,score,其他字段都变为默认值,导致原稀有据损掉(固然在日记中转为了update)
c. 比较测试
接下来我进行了如下测试:

- 左侧应用 WordStr 语句,右侧应用 DELETE + INSERT 语句,最后结不雅完全雷同
- 原主键id为1的行被删除,新插入行主键id更新为4,没有指定内容的字段c则插入了默认值
- 应用 WordStr 更新了一行数据,MySQL提示受影响行数为2行
- 综上所述,解释白实是删除一行,插入一行
三、数据恢复
数据损掉或数据缺点后,可以有如下几种方法恢复:
- 营业方本身写脚本恢复
- 经由过程MySQL的binlog查出误操作sql,生成反向sql进行数据恢复(合适sql数据量较小的情况)
- 经由过程汗青备份文件+增量binlog将数据状况恢复到误操作的前一刻
四、问题扩大
大年夜库自增长值小于主库
1. 测试
a. 主大年夜一致:
主库:
- CREATE TABLE `active_items` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT
推荐阅读
柯洁再战人工智能 大胜“一秒识人机器人”
柯洁与阿尔法狗大年夜战棋艺,柯洁输了,因为柯洁有情,“狗”赢了,因为它无情。泪洒比赛现场的柯洁却并没有被打败,在方才播出的中心一套科学挑衅类节目《机灵过人》中,他居>>>详细阅读
本文标题:MySQL进行Replace操作时造成数据丢失——那些坑你踩了吗?
地址:http://www.17bianji.com/lsqh/36998.html
1/2 1