作家
登录

MySQL进行Replace操作时造成数据丢失——那些坑你踩了吗?

作者: 来源: 2017-08-29 12:04:48 阅读 我要评论

  • ###   @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行
    • 综上所述,解释白实是删除一行,插入一行

    三、数据恢复

    数据损掉或数据缺点后,可以有如下几种方法恢复:

    1. 营业方本身写脚本恢复
    2. 经由过程MySQL的binlog查出误操作sql,生成反向sql进行数据恢复(合适sql数据量较小的情况)
    3. 经由过程汗青备份文件+增量binlog将数据状况恢复到误操作的前一刻

    四、问题扩大

    大年夜库自增长值小于主库

    1. 测试

    a. 主大年夜一致:

    主库:

    1. CREATE TABLE `active_items` ( 
    2.   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 

        推荐阅读

        柯洁再战人工智能 大胜“一秒识人机器人”

      柯洁与阿尔法狗大年夜战棋艺,柯洁输了,因为柯洁有情,“狗”赢了,因为它无情。泪洒比赛现场的柯洁却并没有被打败,在方才播出的中心一套科学挑衅类节目《机灵过人》中,他居>>>详细阅读


      本文标题:MySQL进行Replace操作时造成数据丢失——那些坑你踩了吗?

      地址:http://www.17bianji.com/lsqh/36998.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)