文档章节

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

o
 osc_g8254g7s
发布于 2019/08/19 23:15
字数 426
阅读 15
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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存储引擎应用

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Java线程池

前言 Java中对线程池的抽象是ThreadPoolExecutor类,Executors是一个工具类,内置了多种创建线程池的方法: newFixedThreadPool:固定长度线程池 newCachedThreadPool :可缓存线程池 newSin...

nullpointerxyz
15分钟前
29
0
Python笔记:用Python制作二维码

这些年,二维码在我国的日常使用频率特别大。因为其具有简单及安全性吧!除了用网络工具制作二维码,其实用JavaScript或Python也可以制作二维码,而且更有个性。 示例一(制作普通黑白二维码...

tengyulong
27分钟前
0
0
Redis-初体验/数据结构

定义: Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种 NoSQL(not-only sql,泛指非关系型数据库...

心田已荒
29分钟前
15
0
如何在保留订单的同时从列表中删除重复项? - How do you remove duplicates from a list whilst preserving order?

问题: Is there a built-in that removes duplicates from list in Python, whilst preserving order? 是否有内置的程序在保留顺序的同时从Python列表中删除重复项? I know that I can us...

fyin1314
今天
29
0
以太坊智能合约开发常见的10个安全问题

本文介绍CheckMarx安全研究小组通过扫描公开的以太坊智能合约所发现的Solidity智能合约开发中常见的十大安全问题,其中__未检查的外部调用__ 和 高成本循环 分列排行榜前两名。该安全问题排行...

区块链教程
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部