MariaDB导入最大密钥长度

prdp8dxp  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(172)

我们目前正在将数据库移动到另一个服务器,但我们遇到了一个问题。我们的数据库相当大,当我们想用PhpMyAdmin将其导入到我们的新MariaDB服务器时,我们得到了一个错误代码,不知道如何解决它。抱歉,结果是德语,但它基本上说,密钥太长。最大密钥长度是767。
MariaDB版本:MariaDB-服务器版本:Ubuntu 18.04版
服务器版本:Ubuntu 18.04版
如果有人能帮助解决这个问题,我们将非常感谢你的回答!
示例:

CREATE TABLE IF NOT EXISTS `accounts` (
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `owner` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `money` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

结果:

CREATE TABLE IF NOT EXISTS `accounts` (
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `owner` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `money` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
MySQL meldet: Dokumentation

# 1071 - Schlüssel ist zu lang. Die maximale Schlüssellänge beträgt 767
3pvhb19x

3pvhb19x1#

据我所知,您正在定义name VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL并将其设置为主键。它嵌入在utf8mb4_unicode_ci中,您必须将767字节(或3072字节)的最大索引前缀长度除以4,得到191。
您可以使用VARCHAR(191),也可以不将其用作主键

xqk2d5yq

xqk2d5yq2#

使用了
SET GLOBAL innodb_default_row_format='dynamic';
或在my.ini中修改此参数
innodb-default-row-format = dynamic
通过此更改,您可以在最大为3072字节列上创建索引。

相关问题