You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neos 4.0.x安装失败:执行建表SQL时遇1071键过长错误

解决Neos安装时碰到的SQL键过长错误

嘿,这个问题我之前帮朋友排查过,太熟悉了!咱们先理清楚问题,再给你俩靠谱的解决办法。

先看看你碰到的具体报错

安装Neos时弹出的异常是这样的:

执行SQL语句CREATE TABLE flow3_resource_resourcepointer (hash VARCHAR(255) NOT NULL, PRIMARY KEY(hash)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB时发生异常:SQLSTATE[42000]: 语法错误或访问违规: 1071 指定的键过长;最大键长度为767字节。

为啥会出这个错?

说白了就是字符集和索引长度的冲突:你用的utf8mb4字符集每个字符最多占4个字节,而VARCHAR(255)算下来总字节数是255×4=1020,超过了InnoDB默认单列索引最大767字节的限制,数据库自然就报错了。

两种解决办法,任你选

办法1:改字段长度,简单直接

既然767除以4等于191.75,那咱们把hash字段的长度改成VARCHAR(191)就刚好适配了(191×4=764,没超限制)。你可以手动执行这条修改后的SQL来创建表:

CREATE TABLE flow3_resource_resourcepointer (
    hash VARCHAR(191) NOT NULL,
    PRIMARY KEY(hash)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;

跑完这条SQL,再继续Neos的安装流程就行。

办法2:开启InnoDB大索引支持(适合新一点的数据库版本)

要是不想改字段长度,那可以调整数据库配置,把索引长度限制放宽。不过这个要求你的MySQL版本在5.7.7以上,或者MariaDB在10.2.2以上:

  1. 找到你的数据库配置文件(一般叫my.cnf或者my.ini)
  2. 在[mysqld]区块里加这几行配置:
[mysqld]
innodb_large_prefix = on
innodb_file_format = barracuda
innodb_file_per_table = on
  1. 重启数据库服务,然后重新跑Neos的安装就行。

额外提醒

要是你用的是比较老的数据库版本(达不到上面的版本要求),那办法2用不了,优先选办法1,或者考虑升级下数据库版本,毕竟旧版本也有安全隐患嘛。

内容的提问来源于stack exchange,提问作者jalieb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:06:22