Moodle 数据库转储无法恢复
Moodle database dump not working on restore
我在尝试从 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)
在这种情况下,采取的步骤是为了重新配置新服务器的数据库引擎。
我在尝试从 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)
在这种情况下,采取的步骤是为了重新配置新服务器的数据库引擎。