MariaDB 导入最大密钥长度
MariaDB Import maximum key length
我们目前正在将数据库移动到另一台服务器,但我们遇到了问题。
我们的数据库非常大,当我们想将它导入我们新的 MariaDB 服务器时
PhpMyAdmin。我们收到一个错误代码,但不知道如何解决。
抱歉,结果是德语,但基本上说密钥太长最大密钥长度为767.
MariaDB版本:MariaDB-10.1.48服务器版本:Ubuntu18.04
服务器版本:Ubuntu18.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
据我所知,您正在定义 name VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL
并将其设置为主键。它嵌入在 utf8mb4_unicode_ci
你必须将 767 字节(或 3072 字节)的最大索引前缀长度除以 4 得到 191。
要么使用 VARCHAR(191),要么不使用它作为主键
使用
SET GLOBAL innodb_default_row_format='dynamic';
在您的脚本中或在 my.ini
中修改此参数
innodb-default-row-format = dynamic
通过此更改,您可以在最多 3072 字节的列上创建索引。
我们目前正在将数据库移动到另一台服务器,但我们遇到了问题。 我们的数据库非常大,当我们想将它导入我们新的 MariaDB 服务器时 PhpMyAdmin。我们收到一个错误代码,但不知道如何解决。 抱歉,结果是德语,但基本上说密钥太长最大密钥长度为767.
MariaDB版本:MariaDB-10.1.48服务器版本:Ubuntu18.04
服务器版本:Ubuntu18.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
据我所知,您正在定义 name VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL
并将其设置为主键。它嵌入在 utf8mb4_unicode_ci
你必须将 767 字节(或 3072 字节)的最大索引前缀长度除以 4 得到 191。
要么使用 VARCHAR(191),要么不使用它作为主键
使用
SET GLOBAL innodb_default_row_format='dynamic';
在您的脚本中或在 my.ini
中修改此参数innodb-default-row-format = dynamic
通过此更改,您可以在最多 3072 字节的列上创建索引。