Discuz!小编 发表于 2025-2-17 15:02:16

建立数据表 pre_common_payment_order ... 失败

全新安装X3.5 220828每日构建版本提示:
建立数据表 pre_common_payment_order ... 失败MySQL 里面创建表,MySQL返回#1071 - Specified key was too long; max key length is 1000 bytes


1 贡献最佳答案

      install/data/install.sql
找到`type` varchar(255)NOT NULL,
改为`type` varchar(190)NOT NULL,      

1314学习网发表于2022-8-30 23:58:33
[*]详细答案 >

凡若尘 发表于 2025-2-17 15:02:33

问下 你安装的数据库是 gbk 还是 utf8格式的?
这个提示 是索引字段长度太长,超过了1000bytes

Jessie 发表于 2025-2-17 15:02:50

utf8mb4 ci 按照X3.5的环境需求配置的

KarlMock59 发表于 2025-2-17 15:03:50

mysql什么版本

海军大都督 发表于 2025-2-17 15:04:10

utf8mb4的数据表索引最大只支持250,而这个表里的其中type的索引为255,超出了最大值(当数据库为UTF8时则不影响)

瑾瑜 发表于 2025-2-17 15:05:01

如果您正在使用utf8mb4,并且varchar列上的唯一索引的长度超过191个字符,则需要打开innodb_large_prefix以允许索引中的更大列,因为utf8mb4需要比utf8或latin1更多的存储空间。将以下内容添加到my.cnf文件中。

innodb_file_format=barracudainnodb_file_per_table=1innodb_large_prefix=1init_connect='SET collation_connection = utf8mb4_unicode_ci'init_connect='SET NAMES utf8mb4'character-set-server=utf8mb4collation-server=utf8mb4_unicode_ci

凡若尘 发表于 2025-2-17 15:05:41

my.cnf
innodb_large_prefix=on
作用:启用innodb_large_prefix选项,将约束项扩展至3072byte;

试试

Sylvia 发表于 2025-2-17 15:06:04

Windows 下的MySQL把填写到 my.ini 文件后试了下,还是如此。

凡若尘 发表于 2025-2-17 15:06:17

Windows 下的MySQL把填写到 my.ini 文件后试了下,还是如此。

杰克 发表于 2025-2-17 15:07:04

MySQL 5.7.39
页: [1]
查看完整版本: 建立数据表 pre_common_payment_order ... 失败