当我转储数据库的架构时
mysqldump --no-data my_db > schema.sql
我得到这样的台词
KEY `index_tbl_on_col` (`col`)
但我想要这样的台词
KEY `index_tbl_on_col` (`col`) USING BTREE
事实上,有问题的索引确实有Index_type = 'BTREE'
.
show index from tbl;
| Table | Key_name | Index_type |
+-------+---------------+------------+
| tbl | ix_tbl_on_col | BTREE |
我尝试了多种mysqldump
选择,包括--skip-opt --create-options
一起使用。
我正在使用自制软件mysqldump
中的5.6.26 。
mysqldump --version
mysqldump Ver 10.13 Distrib 5.6.26, for osx10.10 (x86_64)
您不必担心将 嵌入
USING BTREE
到索引中。为什么 ?MyISAM 和 InnoDB 的默认索引类型是 BTREE。您不能强加任何其他类型。
MEMORY 存储引擎的默认索引类型是 HASH。您可以强加一个 BTREE 索引类型。
我在 4 年前写了一篇关于 HASH not being allowed for MyISAM and InnoDB 的帖子:Why does MySQL not have hash indices on MyISAM or InnoDB?
鉴于此,没有必要明确强调
USING BTREE
.您可以查找
CREATE INDEX
文档以验证每个存储引擎的默认索引类型。更新 2015-09-24 16:23 EDT
嘿 Jared,我给你一个惊喜。我去谷歌了一圈,有办法吐出来
USING BTREE
。该选项是--compatible=mysql40。我在 StackOverflow 中看到它:MySQL error USING BTREE有趣的是,有一些关于此的错误报告。你知道是谁提交的吗?一个叫贾里德的人。