mysql5.6trucate丢表问题

mysql5.6 truncate 丢表问题

黎平县人民医院(win server 2008 64bit, mysql-connector-8),昨天发现his_patient_info表丢了。

直接报错是(Got error -1 from storage engine on truncate table statement),执行select失败,show tables能看到表。 微策云后台的执行位置是在同步所有患者,truncate his_patient_info表的时候。 mysql日志,进一步排查发现是D:\vivachekcloud\mysql\data\vivachek_cloud\his_patient_info表的ibd文件丢了,只留有frm文件。

正好前几天服务器有重启,怀疑是断电等造成的文件损坏或丢失。 导出整库的sql,重新建库,补his_patient_info表. 当时是正常的,同步所有患者成功。

今天又发现有同样的问题,怀疑是数据库bug,重装最新mysql5.6.51, 还是有同样的问题。 而且发现 在navicat 中如下顺序执行: — 清理表 ALTER TABLE his_patient_info DISCARD TABLESPACE; DROP TABLE his_patient_info;

— 重新建表 CREATE TABLE his_patient_info ( user_id varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, ipt_num varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, name varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, gender int(11) NULL DEFAULT NULL, birthday date NULL DEFAULT NULL, bed_num varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, dept_id varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, doc_id varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, diagnosis int(11) NULL DEFAULT NULL COMMENT ‘诊断’, ipt_time datetime NULL DEFAULT NULL, leave_time datetime NULL DEFAULT NULL, status int(11) NULL DEFAULT 1, bed_sort varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘正则后的床位,用于床位排序’, PRIMARY KEY (user_id) USING BTREE ) ENGINE = InnoDB — CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;

— 多truncate几次, 有一定几率触发一样的错误(Got error -1 from storage engine on truncate table statement) truncate table his_patient_info; truncate table his_patient_info; truncate table his_patient_info; truncate table his_patient_info;

那最大的可能是

  1. mysql5.6的bug (https://bugs.mysql.com/bug.php?id=74676)
  2. win server2016没有遇到这种问题吧,或许是win server 2008-》2016 底层接口有变动?

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注