以下是已知的问题合并
表:
在5.1.23之前的MySQL服务器版本中,可以使用非临时子MyISAM表创建临时合并表。
从版本5.1.23开始,MERGE子表通过父表被锁定。如果父进程是临时的,它不会被锁定,所以子进程也不会被锁定。并行使用MyISAM表破坏了它们。
如果你使用
ALTER TABLE
改变一个合并
表到另一个存储引擎,映射到底层表丢失。相反,来自底层的行MyISAM
将表复制到修改后的表中,然后修改后的表使用指定的存储引擎。的
插入_method.
表选项合并
表表明了哪个底层MyISAM
表中用于插入的合并
表格然而,使用the自动递增
表选项MyISAM
表对插入件没有效果合并
表直到至少一行直接插入MyISAM
表格一个
合并
表不能在整个表格中保持唯一性约束。当你执行一个插
,数据进入第一个或最后一个MyISAM
表(由插入_method.
选项)。MySQL确保唯一的键值在其中保持唯一MyISAM
表,但不是集合中的所有基础表。因为
合并
引擎不能对基础表集强制唯一性,取代
不按预期工作。两个关键事实是:类似的考虑申请
插入...在重复的密钥更新时
.合并
表不支持分区。也就是说,你不能分割a合并
表,也不可以合并
表的基本MyISAM
表被分区。你不应该使用
分析表
,修理表
,优化表
,ALTER TABLE
,删除表
,删除
没有一个在哪里
条款,或截断表
映射到open的任何表上合并
表格如果你这样做了,那么合并
表仍可能引用原始表并产生意外结果。要解决这个问题,请确保没有合并
通过发出a保持表格开放冲洗表
语句,然后执行任何命名的操作。意外的结果包括可能的操作上
合并
表报告表损坏。如果此操作发生在基础上的指定操作之一之后MyISAM
表,损坏消息是虚假的。要解决这个问题,请发布一个冲洗表
修改后的声明MyISAM
表。删除表
在一个由a使用的桌子上合并
表在Windows上不能工作,因为合并
存储引擎的表映射对MySQL的上层是隐藏的。Windows不允许删除已打开的文件,因此您必须首先刷新所有文件合并
桌子(有冲洗表
)或放弃合并
表前删除表。的定义
MyISAM
表和合并
在访问表(例如,作为选择
或者插
陈述)。检查确保表和父母的定义合并
表定义通过比较列顺序,类型,大小和关联索引来匹配。如果表之间存在差异,则返回错误,并且语句失败。由于这些检查在打开表时进行,因此对单个表的定义的任何更改,包括列更改,列排序和引擎更改会导致语句失败。中索引的顺序
合并
表及其基础表应该相同。如果你使用ALTER TABLE
添加A.独特的
控件中使用的表的索引合并
表,然后使用ALTER TABLE
对象上添加非惟一索引合并
表,如果基础表中已经有非唯一索引,则该表的索引顺序不同。(这是因为ALTER TABLE
put独特的
索引先于非唯一索引,方便快速检测重复键。)因此,对具有此类索引的表进行查询可能会返回意外的结果。如果遇到类似于错误1017 (HY000):无法找到文件:'
tbl_name.
.mrg'(errno:2),它通常表明某些基础表不使用MyISAM
存储引擎。确认所有这些表都是MyISAM
.a中的最大行数
合并
表是264(~ 1.844 e + 19;a也是一样MyISAM
表)。不可能合并多个MyISAM
桌子成一个合并
表将超过此数量的行。使用的底层
MyISAM
不同行格式的表格与父级合并
表当前已知会失败。看到bug#32364。不能更改非临时文件的联合列表
合并
表的时候锁定表
有效。以下是不工作:创建表M1 ... Engine = MRG_MYISAM ......;锁定表T1写入,T2写入,M1写;改变表M1 ... Union =(T1,T2)......;
但是,您可以使用临时工具来实现这一点
合并
表格您不能创建
合并
表创建...选择
,两者都不是暂时的合并
餐桌,也非作为临时的合并
表格例如:创建表M1 ... Engine = MRG_MYISAM ...选择......;
尝试执行此结果的错误:
tbl_name.
不是基表
.在某些情况下,不同的情况
pack_keys.
表选项值之间的值合并
如果底层表包含char
或者二进制
列。作为一个变通方法,使用ALTER TABLE
确保所有涉及的表具有相同的pack_keys.
价值。(bug#50646)