MySQL数据库MERGE表的问题_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2529 | 回复: 0   主题: MySQL数据库MERGE表的问题        下一篇 
koei666
注册用户
等级:新兵
经验:61
发帖:63
精华:0
注册:2012-1-9
状态:离线
发送短消息息给koei666 加好友    发送短消息息给koei666 发消息
发表于: IP:您无权察看 2015-4-9 16:56:27 | [全部帖] [楼主帖] 楼主

今天把数据库从5.0的一个mysql版本迁移到mysql 5.1的过程中遇到一个问题,发现一个MERGE表一直出现Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist报错,但是在5.0上一直是OK的,于是进行了一些实践后发现是由于MERGE的表索引和其他子表不一致导致。
添加索引之后正常了。而为什么5.0是正常的呢,我猜测是由于5.0的版本对MERGE表没有那么严格的要求。
因此当遇到Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist报错的时候需要从如下几个方面入手:
1、查看是不是有一些表不是MYISAM引擎的表,因为MERGE引擎只适用于MYISAM表
2、查看是不是在union的表中含有不存在的表。
3、查看是不是MERGE的时候引用了不在同一个库的表,并且该表没有指定数据库名字。 
4、比较各个表的结构(索引、引擎、列、字符集等)是否一致。

子表代码为:

CREATETABLE`test0` (
02.`uin` int(10) unsigned NOTNULL,
03.`data` text NOTNULL,
04.`modtime` int(10) unsigned NOTNULL,
05.PRIMARYKEY(`uin`)
06.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
07.
08.CREATETABLE`test1` (
09.`uin` int(10) unsigned NOTNULL,
10.`data` text NOTNULL,
11.`modtime` int(10) unsigned NOTNULL,
12.PRIMARYKEY(`uin`)
13.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
14.
15.CREATETABLE`test2` (
16.`uin` int(10) unsigned NOTNULL,
17.`data` text NOTNULL,
18.`modtime` int(10) unsigned NOTNULL,
19.PRIMARYKEY(`uin`)
20.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
21.
22.CREATETABLE`test3` (
23.`uin` int(10) unsigned NOTNULL,
24.`data` text NOTNULL,
25.`modtime` int(10) unsigned NOTNULL,
26.PRIMARYKEY(`uin`)
27.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
28.
29.CREATETABLE`test4` (
30.`uin` int(10) unsigned NOTNULL,
31.`data` text NOTNULL,
32.`modtime` int(10) unsigned NOTNULL,
33.PRIMARYKEY(`uin`)
34.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
35.
36.CREATETABLE`test5` (
37.`uin` int(10) unsigned NOTNULL,
38.`data` text NOTNULL,
39.`modtime` int(10) unsigned NOTNULL,
40.PRIMARYKEY(`uin`)
41.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
42.
43.CREATETABLE`test6` (
44.`uin` int(10) unsigned NOTNULL,
45.`data` text NOTNULL,
46.`modtime` int(10) unsigned NOTNULL,
47.PRIMARYKEY(`uin`)
48.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
49.
50.CREATETABLE`test7` (
51.`uin` int(10) unsigned NOTNULL,
52.`data` text NOTNULL,
53.`modtime` int(10) unsigned NOTNULL,
54.PRIMARYKEY(`uin`)
55.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
56.
57.CREATETABLE`test8` (
58.`uin` int(10) unsigned NOTNULL,
59.`data` text NOTNULL,
60.`modtime` int(10) unsigned NOTNULL,
61.PRIMARYKEY(`uin`)
62.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
63.
64.CREATETABLE`test9` (
65.`uin` int(10) unsigned NOTNULL,
66.`data` text NOTNULL,
67.`modtime` int(10) unsigned NOTNULL,
68.PRIMARYKEY(`uin`)
69.) ENGINE=MyISAM DEFAULTCHARSET=latin1;
1.CREATETABLE`test` (
2.`uin` int(10) unsigned NOTNULL,
3.`data` text NOTNULL,
4.`modtime` int(10) unsigned NOTNULL,
5.PRIMARYKEY(`uin`),
6.KEY`modtime` (`modtime`)
7.) ENGINE=MRG_MyISAM DEFAULTCHARSET=latin1 UNION=(`test0`,`test1`,`test2`,`test3`,`test4`,`test5`,`test6`,`test7`,`test8`,`test9`);


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论