我们目前正在将数据库移动到另一个服务器,但我们遇到了一个问题。我们的数据库相当大,当我们想用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
2条答案
按热度按时间3pvhb19x1#
据我所知,您正在定义
name VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL
并将其设置为主键。它嵌入在utf8mb4_unicode_ci
中,您必须将767字节(或3072字节)的最大索引前缀长度除以4,得到191。您可以使用VARCHAR(191),也可以不将其用作主键
xqk2d5yq2#
使用了
SET GLOBAL innodb_default_row_format='dynamic';
或在my.ini中修改此参数
innodb-default-row-format = dynamic
个通过此更改,您可以在最大为3072字节列上创建索引。