前一段在月黑风高的夜里,修改线上服务器的表结构,直接致使崩溃,在此记录过程;mysql
原始表结构相似以下,原先只有一个bill_sn的惟一索引(索引类型为HASH,这里自己就是有些问题的);sql
CREATE TABLE `op_bill`(`id` bigint(20) NOT NULL AUTO_INCREMENT, `billSn` varchar(17) NOT NULL COMMENT '单号', `imcome` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '收入金额', `outgo` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '支出金额', `currentBalance` decimal(10,2) NOT NULL COMMENT '当前账户余额', `type` int(10) NOT NULL DEFAULT '1' COMMENT '1 支付 2 退款 3 充值', `createAt` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `bill_sn` (`billSn`) USING HASH, )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='流水信息(账户余额变动记录)';
ALTER TABLE `op_bill` ADD INDEX `create_at` (`createAt`) USING BTREE ;
ERROR 2013 (HY000): Lost connection to MySQL server during query
Table doesn't exist in engine
,但show tables
能够显示出该 表查看表结构文件及数据文件,完好失 查询ibdata/ibdata_logfile1/ibdata_logifle2等文件,完好失; 重启数据库无效;
新建一张相同表结构的表,表名定义为xxx_1,修改项目中对应的表,让线上环境可以写入数据,记录当前的position地址; 在测试环境测试,删除原表,提示一个警告,查询表已经删除,但新建该表结构时又提示该表存在,已经删除表结构文件与表数据文件,尝试几回无果; 重构测试数据,在强制恢复模式下能够彻底删除该表,而后重建表结构(xxx);