mysql 到 mariadb 恢复备份

mysql to mariadb restoring backup

我的 mysql 数据库转储很好,但是当我去使用 mariadb 的新服务器上恢复它时,它只会部分恢复然后抛出错误;

#1071 - 指定的密钥太长:最大密钥长度为 767 字节

我发现当我安装一个程序时,当我在数据库上使用 Force UTF-8 归类时它可以工作"和 "Force UTF-8 collation on tables" 但我不知道如何做,当我有原始 sql 文件 - 帮助?

这可以通过在原始 sql 转储中将 utf8mb4 替换为 utf8 来解决。

其他解决方案可以在这里找到:#1071 - Specified key was too long; max key length is 767 bytes

这个问题在 5.7.7 (MariaDB 10.2.2?) 提高限制之前就存在了。

如果您因为尝试使用 CHARACTER SET utf8mb4 而达到上限。然后执行以下操作之一(每个都有缺点)以避免错误:

  • 升级到 5.7.7(或更高版本)以获得 3072 字节的限制;
  • VARCHAR 上将 255 更改为 191 -- 您将丢失任何超过 191 个字符的值(不太可能?);
  • ALTER .. CONVERT TO utf8 -- 你失去了表情符号和一些中文;
  • 使用 "prefix" 索引 -- 您将失去一些性能优势。
  • 或者...继续使用 5.6/5.5/10.1,但执行 4 个步骤将限制提高到 3072 字节:

    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)