【问题标题】:mysql to mariadb restoring backupmysql 到 mariadb 恢复备份
【发布时间】:2019-08-24 10:44:29
【问题描述】:

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

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

我发现,当我使用程序安装时,它在我使用 Force UTF-8 collat​​ion on database”和“Force UTF-8 collat​​ion on tables”时可以工作,但我不知道该怎么做只有原始 sql 文件 - 帮助?

【问题讨论】:

    标签: mysql collation


    【解决方案1】:

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

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

    【讨论】:

    • 辛苦了。谢谢。
    【解决方案2】:

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

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

    • 升级到 5.7.7(或更高版本)以获得 3072 字节的限制;
    • VARCHAR 上的 255 更改为 191 -- 您会丢失任何超过 191 个字符的值(不太可能?);
    • ALTER .. CONVERT TO utf8 -- 你失去了表情符号和一些中文;
    • 使用“前缀”索引 - 您会失去一些性能优势。
    • 或者...保持 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)
      

    【讨论】:

      猜你喜欢
      • 2012-02-07
      • 1970-01-01
      • 2011-05-28
      • 2016-12-05
      • 1970-01-01
      • 2012-11-24
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多