在导入具有UTF8MB4的数据库时,我遇到了问题,这是在MariaDB 5.5版本上

由于某个生产服务器是MariaDB5.5这个旧版本的服务器,所以尽管想要导入Concrete CMS(concrete5) utf8mb4格式的数据库SQL Dump,

The database does not support index fields with a length up to 255 characters when using the collation utf8mb4.

出现错误,无法导入mysql。

以下是针对必须使用MariaDB 5.5的情况下采取的应对措施,但我们希望能够升级到MariaDB 10.5或MySQL 5.7左右。

步骤1:使MySQL能够使用utf8mb4。

在 InnoDB 中应用各种必要的设置。
这里是指在拥有 MariaDB/MySQL 的 root 权限,但没有服务器的 sudo 或 root 权限且无法更改 my.cnf 的情况下。

SHOW GLOBAL VARIABLES LIKE '%innodb_file_%';
SET GLOBAL innodb_default_row_format = dynamic;
SET GLOBAL innodb_file_per_table = on;
SET GLOBAL innodb_large_prefix = `ON`;
SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_format_max = `Barracuda`;
SHOW GLOBAL VARIABLES LIKE '%innodb_file_%';

由于在my.cnf中设置并重新启动MySQL有很多方法来确认是否正常,所以……

第二步:修改SQL转储文件

无论怎样更改服务器端的设置,如果不在声明SQL Dump表结构的地方添加ROW_FORMAT=DYNAMIC,则会持续出现相同的错误。

因此, (Chinese translation)。

ENGINE=InnoDB

使用文字進行全文搜尋。

ROW_FORMAT=DYNAMIC ENGINE=InnoDB

通过这样的方式,可以将 ROW_FORMAT=DYNAMIC 的声明添加到 SQL Dump 表中的所有项。

通过这个方法,你可以在 MariaDB 5.5 上导入 UTF8mb4 的数据库。
如果 MySQL 5.5 遇到了类似的问题,也可以考虑使用相同的步骤进行修复。