1

我似乎无法使用 mysqldump 转储已创建为 MyISAM 合并表的表。

当我尝试这样做时,它只是转储一个包含创建表语法的文件(正确),但不转储基础表中的任何数据。

这是预期的还是已知的错误?如何在 MRG_MyISAM 表上复制 mysqldump 的行为?

4

2 回答 2

1

这应该是可以预料的。MERGE 表只是 MyISAM 表的映射。

您必须转储基础表。

如果你想要某种模拟来 mysqldump 一个 MERGE 表(对于一个名为 mydb.mymergetable 的表,其存储引擎是 Mrg_MyISAM)

USE mydb
CREATE TABLE myhardtable LIKE mymergetable;
ALTER TABLE myhardtable ENGINE=MyISAM;
INSERT INTO myhardtable SELECT * FROM mymergetable;

现在,只需这样做:

mysqldump -u... -p... mydb myhardtable > /root/MyMergeData.sql

你也可以这样做

SELECT * INTO OUTFILE '/root/MyMergeData.sql'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM mydb.myhardtable;
于 2012-04-12T17:35:05.480 回答
0

MySQL 列出了 MyISAM 合并表的一些常见问题。如果没有更多代码,我无法确定您的具体问题,但这是一个很好的起点:http ://dev.mysql.com/doc/refman/5.1/en/merge-table-problems.html

于 2012-04-12T17:25:14.083 回答