cgft 发表于 2016-3-16 12:55:23

升级数据库表存储引擎的一个方法

本帖最后由 cgft 于 2016-3-16 13:03 编辑

OA的文件管理模块,文件柜文件表file_content 崩溃了,造成整个文件系统陷于瘫痪。
在系统管理模块的数据库管理里面查,可以看到file_content表大小是0。原因不详。
用前一天的备份,恢复file_content表后,工作正常。但在系统管理模块的数据库管理里面,显示的该表类型是MyISAM,而看其他数据表,其存储引擎都是InnoDB。心中存疑,遂咨询了通达客服,确认2015现版本的file_content表存储引擎是InnoDB型。
从安全角度讲,MyISAM的存储引擎的安全性不如InnoDB,估计也是由于MyISAM存储引擎健壮性不强,引起的数据表的崩溃。
看来,我的系统在升级的时候,file_content表的类型未能随之升级。至于为什么,就不得而知了。
用phpMyAdmin在后台操作,经试验,无法将MyISAM型的表直接改为InnoDB型的表。遂采用如下变通方法:
1. 将file_content表,更名。例如改名为file_content0(这个表是MyISAM型的);
2. 从其他2015版中,导出InnoDB型的file_content表,然后导入至系统;(采用这一步,是最省事且安全的做法。免去了建表、建索引的麻烦)
3. 清空file_content的数据;(只保留表结构)
4. 把file_content0的数据,转而复制到file_content中。见图1


操作后,经检查,存储引擎改变成功。原数据表file_content0,也可以删除了。




页: [1]
查看完整版本: 升级数据库表存储引擎的一个方法