gpt4 book ai didi

mysql - Cakephp 3 在 phpmyadmin 问题中创建 i18n 表

转载 作者:行者123 更新时间:2023-11-29 18:03:30 24 4
gpt4 key购买 nike

我在为 CakePHP 3 翻译行为创建 i18n 表时遇到问题。所以我的数据库位于 phpmyadmin 中,当我想执行官方说明书中的这段代码时:

CREATE TABLE i18n (
id int NOT NULL auto_increment,
locale varchar(6) NOT NULL,
model varchar(255) NOT NULL,
foreign_key int(10) NOT NULL,
field varchar(255) NOT NULL,
content text,
PRIMARY KEY (id),
UNIQUE INDEX I18N_LOCALE_FIELD(locale, model, foreign_key, field),
INDEX I18N_FIELD(model, foreign_key, field)
);

PhpMyAdmin 说:

1071 - 指定的键太长;最大 key 长度为 767 字节

我在uft8_unicode_ci。我应该选择 utf8_general_ci 吗?

感谢您的帮助。

最佳答案

utf8_unicodeutf8_general 之间的大小要求没有区别,它们仅在排序方面有所不同。

默认情况下,InnoDB 表的索引(键前缀)限制为 767 字节(MyISAM 为 1000 字节),如果适用,请启用 innodb_large_prefix 选项(从 MySQL 5.7 开始默认启用)它将限制提高到 3072 字节,或者使 VARCHAR 列更小,和/或更改其排序规则,locale 列(保存 ISO 区域设置/国家/地区代码)肯定不会不要使用 unicode 字符,并且您的模型和列/字段名称也可能只使用 ASCII 字符,并且它们的名称长度远低于 255 个字符。

使用 ASCII 排序规则时,VARCHAR 列每个字符只需要 1 个字节,而 UTF-8 则需要最多 3 个字节(对于 mb4 则需要 4 个字节) > 变体),仅此一项就已经导致超出索引大小限制 (3 * 255 * 2 = 1530)。

另请参阅

关于mysql - Cakephp 3 在 phpmyadmin 问题中创建 i18n 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48123339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com