对于默认的mysql数据库表:db、host和user,将MariaDB存储引擎更改为InnoDB



可以使用更改特定表的存储引擎类型

ALTER TABLE table_name ENGINE = InnoDB;

这适用于除MariaDB/MySQL安装附带的数据库、主机和用户表之外的所有表。它抛出一个(通用(错误:

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")

我可以理解为什么在运行的数据库上更改表引擎对于这些特定的表会有问题(因为它们保存数据库和用户信息(。但是如何改变这一点呢?

您不能更改engone

在MariaDB 10.3及之前版本中,此表使用MyISAM存储引擎。

为什么不更新

在MariaDB 10.4及更高版本中,mysql.global_priv表已经取代了mysql.user表,mysql.user应该被认为是过时的。

请参阅手动

不要,重复不要,尝试更改MySQL服务器中预定义的mysqlinformation_schemaperformance_schema数据库中表的定义。这些表由服务器软件本身管理,如果更改它们,可能会损坏服务器。

也不要尝试在这些表中UPDATEINSERT行。使用数据定义语言SQL语句。

而且,ALTER TABLE table_name ENGINE = InnoDB;不会更改默认存储引擎。相反,它会更改名为table_name的表的存储引擎。

最新更新