前一段在月黑風高的夜裏,修改線上服務器的表結構,直接致使崩潰,在此記錄過程;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);