可以将mysql.user表的引擎从MyISAM转换为InnoDb吗?

时间:2015-10-02 07:24:21

标签: mysql innodb myisam

我在生产MySQL数据库上运行了以下查询:

SELECT  CONCAT('`', table_schema,'`.`', table_name, '`') AS schema_tables
FROM    information_schema.tables AS tb
WHERE   `ENGINE` = 'MyISAM'
AND     `TABLE_TYPE` = 'BASE TABLE'
ORDER BY table_name DESC;

它从mysql架构返回了所有表,其中一些是:

`mysql`.`user`
`mysql`.`time_zone_transition_type`
`mysql`.`time_zone_transition`
`mysql`.`time_zone_name`
`mysql`.`time_zone_leap_second`
`mysql`.`time_zone`
`mysql`.`tables_priv`
`mysql`.`servers`
`mysql`.`proxies_priv`
...

我的疑问是:
 1.这些可以安全地转换为innodb吗?  2.为什么他们首先在MyISAM引擎中?我是故意改错了还是默认?

服务器版本:5.6.22-log MySQL社区服务器(GPL)
PS:我知道InnoDb是5.6的默认引擎,我从未运行任何查询来转换为MyISAM。

1 个答案:

答案 0 :(得分:2)

不,你不能!

正如docs所说:

  

重要

     

不要将mysql数据库(例如用户或主机)中的MySQL系统表转换为InnoDB类型。这是一项不受支持的操作。系统表必须始终为MyISAM类型。