上传项目图片:“Percona Toolkit”雷竞技下载官网
  1. 雷竞技下载官网Percona工具包
  2. pt - 1914

在列注释中“生成”时丢失的列数据

    XML 可打印的

细节

    • 错误
    • 状态: Done">完成
    • 解决方法: 固定
    • 3.0.133.2.1之上3.3.0
    • 3.3.1
    • 没有一个
    • 没有一个
    • 04 -核心
    • 是的

    描述

      对用户的影响:

      • 部分列数据全部丢失

      复制步骤:
      1.根据初始描述创建数据:

      删除表成员测试创建表MemberTest (MemberId)int(10) UNSIGNED NOT NULL, ' Password ' varchar“评论”')引擎=InnoDB默认字符集=utf8;添加主键(MemberId)INSERT INTO ' MemberTest ' (' MemberId ', ' Password ') VALUES (1)“测试”);

      2.检查表格内容:

      mysql> select * from MemberTest+----------+----------+ | MemberId |密码  | +----------+----------+ | 1 |测试  | +----------+----------+ 1行集(0.00秒)

      3.pt-osc运行:

      $ /home/sveta/mysqlpackages/雷竞技下载官网percona-toolkit-3.3.0/bin/pt-online-schema-change“添加列c1 INT”D=test,t=MemberTest,u=sveta——execute没有发现slave。看到——recursion-method如果主机Delly-7390有奴隶。没有检查slave lag,因为没有找到slave,并且没有指定——check-slave-lag。#一个软件更新是可用的:Operation, tries, wait: analyze_table, 10,1 copy_rows, 10,0.25 create_triggers, 10,1 drop_triggers, 10,1 swap_tables, 10,1 update_foreign_keys, 10,1 changing ' test ' . ' MemberTest '…创建表格创建表测试。_MemberTest_new OK。改变表格改变“测试”。“_MemberTest_new”好了。2012-02-13 t18:38:46创建触发器…2021-02-13T18:38:46创建触发器OK。2021-02-13T18:38:46复制大约1行…2021-02-13T18:38:46复制行OK。2021 - 02年- 13 - t18:38:46分析表格交换桌子…2021-02-13T18:38:46替换原来的和表好。扔掉旧桌子…删除旧表“test”。“_MemberTest_old”好了。删除触发器…2021-02-13T18:38:46删除触发器OK。成功修改' test ' . ' MemberTest '。

      4.再次检查表格内容:

      实际结果:

      mysql> select * from MemberTest+----------+----------+------+ | MemberId |密码| c1  | +----------+----------+------+ | 1 | |零  | +----------+----------+------+ 1行集(0.00秒)

      注意,“Password”一列是空的。

      预期结果:

      mysql> select * from MemberTest+----------+----------+------+ | MemberId |密码| c1  | +----------+----------+------+ | 1 | |测试NULL  | +----------+----------+------+ 1行集(0.00秒)

      处理:
      N/A

      细节
      sveta.smirnova:这里的问题是,GENERATED是一个关键字,因为5.7允许生成列。例如,列没有数据,但存储计算值。可以是这样的:foo INT GENERATED ALWAYS AS 2+2

      最初的报告:

      在使用pt-online-schema-change更改表后,其中一列的数据丢失了,这似乎与列注释上的“生成”一词有关。

      命令:pt-online-schema-change——alter "ADD COLUMN c1 INT" D=test_kevin,t=MemberTest——execute
      版本:pt-online-schema-change 3.2.1
      服务器版本:5.7.16-10-57

      测试数据:

      删除表成员测试创建表MemberTest (MemberId)int(10) UNSIGNED NOT NULL, ' Password ' varchar“评论”')引擎=InnoDB默认字符集=utf8;添加主键(MemberId)INSERT INTO ' MemberTest ' (' MemberId ', ' Password ') VALUES (1)“测试”);

      这个问题可能与pt - 1570但这似乎应该得到解决。

      附件

        活动

            未赋值的未赋值的
            kevinw凯文·伍特斯
            投票:
            0 为这个问题投票
            观察人士:
            5 开始关注这个问题

            日期

              创建:
              更新:
              解决:

              聪明的清单