[Err] 1168 - Unable to open underlying table which is differently defined or of non-MyISAM type or d

Posted bridgestone29-08

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Err] 1168 - Unable to open underlying table which is differently defined or of non-MyISAM type or d相关的知识,希望对你有一定的参考价值。

mysql运用MERGE引擎进行分表

这里所做的分表是指水平拆分,就是多张表数据结构完全一致(所有的数据列一致,不多不少)。

要想用 MERGE引擎,所有需要拆分的表及拆分后的字表,必须为 MYISAM 引擎,这个好难满足。因为 MYISAM 引擎不支持事务,这在生产实际中极少数据表会采用 MYISAM。因为现在的应用,都想用分布式事务(极麻烦),不用事务那就别提了,办不到。

将user拆分成二张表user1和user2,

// (备份users表)备份!备份!备份!重要的事情说三遍。
DROP TABLE IF EXISTS users;
CREAT users LIKE user1;
// 将users表的所有附加属性都拷贝过来
ALTER TABLE users ENGINE=MRG_MYISAM UNION=(user1,user2) INSERT_METHOD=LAST;  

【特注】:在创建完成后,所有对users的操作都可能报一个错:[Err] 1168 - Unable to open underlying table which is differently defined or of non-MyISAM type or doesn‘t exist

究其原因,就是拷贝的时候遗漏了。我是遗漏了 CHARSET=utf8 其他小伙伴呢?!!!

还有可能是(网络上的):

1、查看是不是有一些表不是MYISAM引擎的表,因为MERGE引擎只适用于MYISAM表

2、查看是不是在union的表中含有不存在的表。

3、查看是不是MERGE的时候引用了不在同一个库的表,并且该表没有指定数据库名字。

4、比较各个表的结构(索引、引擎、列、字符集等)是否一致。

5、CHARSET=utf8 等,类似的约定是否一致(全拷贝过来!!!)。

 

参考资料:

  1.mysql的merge存储引擎应用

 

以上是关于[Err] 1168 - Unable to open underlying table which is differently defined or of non-MyISAM type or d的主要内容,如果未能解决你的问题,请参考以下文章

npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree

转npm 安装express npm ERR! code UNABLE_TO_VERIFY_LEAF_SIGNATURE

怎么解决Chrome浏览器“Failed to load resource:net:ERR

Failed to load resource: net::ERR_CONNECTION_REFUSED

如果遇到php5.6 上传图片error代码为6 或者 报错“PHP Warning: File upload error - unable to create a temporary file in

Nacos 启动报错 Unable to start web server……Unable to start embedded Tomcat