可以通过以下方式更改特定表的存储引擎类型:
ALTER TABLE table_name ENGINE = InnoDB;
这适用于MariaDB/MySQL安装附带的所有表,但db、host和user表除外。它引发一个(泛型)错误:
MariaDB [mysql]> ALTER TABLE db ENGINE = InnoDB;
ERROR 1025 (HY000): Error on rename of './mysql/#sql-149_24b' to './mysql/db' (errno: 168 "Unknown (generic) error from engine")
MariaDB [mysql]> ALTER TABLE host ENGINE = InnoDB;
ERROR 1025 (HY000): Error on rename of './mysql/#sql-149_24b' to './mysql/host' (errno: 168 "Unknown (generic) error from engine")
MariaDB [mysql]> ALTER TABLE user ENGINE = InnoDB;
ERROR 1025 (HY000): Error on rename of './mysql/#sql-149_24b' to './mysql/user' (errno: 168 "Unknown (generic) error from engine")我可以理解为什么更改正在运行的数据库上的表引擎对于这些特定的表(因为它们保存了db和用户信息)是有问题的。但如何改变这种状况呢?
发布于 2021-12-08 16:24:20
你不能改变你的想法
在MariaDB 10.3和之前的版本中,这个表使用MyISAM存储引擎。
为什么不更新
在MariaDB 10.4和更高版本中,mysql.global_priv表已经取代了mysql.user表,mysql.user应该被认为是过时的。
请参阅手册
发布于 2021-12-08 16:28:59
不要尝试更改mysql、information_schema或performance_schema数据库中在MySQL服务器中预定义的表的定义。这些表由服务器软件本身管理,如果您更改这些表,可能会损坏您的服务器。
也不要试图在这些表中使用UPDATE或INSERT行。使用数据定义语言SQL语句。
而且,ALTER TABLE table_name ENGINE = InnoDB;不改变默认的存储引擎。相反,它更改了名为table_name的表的存储引擎。
https://stackoverflow.com/questions/70278279
复制相似问题