我正试图从Moodle数据库恢复MariaDB转储,这时我收到了以下错误:
ERROR 1071 (42000) at line 10540: Specified key was too long; max key length is 767 bytes
经过一点研究,我开始整理模式,它是utf8mb4_unicode_ci。
当我将大小从255更改为170时,可以解决此错误。然而,有时它的大小是否为255并不重要,因为它会创建它们。
现在,
1-如果恢复不起作用,为什么转储文件会给我这个配置?
2-如果不允许varchar大小,这是如何工作的?
3-除了从255变到170,还有什么更简单的方法可以完成这项工作吗?
正如@Rick James在编辑中所说,解决方案是下一步:
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1;
SET GLOBAL innodb_large_prefix=1;
logout & login (to get the global values);
ALTER TABLE tbl ROW_FORMAT=DYNAMIC; -- (or COMPRESSED)
在这种情况下,采取这些步骤是为了重新配置新服务器的数据库引擎。