Gogs 连接 MySQL 报 Error 1071 “key was too long“ 怎么处理
📅 2026/9/10 15:35:55✍️ 爱科研究院👁 阅读 3,247
Gogs 连接 MySQL 报 Error 1071 key was too long 怎么处理【免费下载链接】gogsThe painless way to host your own Git service项目地址: https://gitcode.com/GitHub_Trending/go/gogs用 MySQL 或 MariaDB 作为 Gogs 的后端数据库时启动或连接数据库阶段可能报出这个错误Error 1071: Specified key was too long; max key length is 1000 bytesGogs 官方排错文档给出的原因是数据库当前使用的是 MyISAM 存储引擎它的最大键长比 InnoDB 短导致 Gogs 建表/索引时超长。处理方式是登录 MySQL 把存储引擎切到 InnoDB然后重启 Gogs。前提是你已经按 安装文档 的要求初始化了 MySQLMySQL 5.7且custom/conf/app.ini中[database] TYPE mysql。确认错误与原因对照 排错文档 中 Incorrect MySQL storage engine (key too long) 一节的描述错误信息形如Error 1071: Specified key was too long; max key length is 1000 bytes可能原因数据库在 MyISAM 存储引擎上而 MyISAM 允许的最大键长小于 InnoDB。如果你只是启动后偶发、不确定具体在哪张表先确认现象与上面的错误文本一致再按下面的步骤切换存储引擎。切换存储引擎到 InnoDB文档给出的修复动作发生在导入初始 schema 之后。登录 MySQL执行USE gogs; SET GLOBAL storage_engineINNODB;这两条语句的含义是选中 Gogs 使用的gogs库并把 MySQL 的全局默认存储引擎改为 InnoDB。执行完不会立刻改变已有表但会让 Gogs 后续按新引擎连接数据库。重启 Gogs 验证文档明确要求重启 Gogs让它以新的存储引擎重新连接数据库。成功条件即重启后 Gogs 能正常连接 MySQL不再报 Error 1071。gogs web的启动方式见 安装文档如果你以 systemd 服务方式运行重启服务即可参见 run-as-service。初始化阶段如何避免该问题如果你还在建库阶段可以用仓库自带的脚本创建数据库。它会自动设置 InnoDB 相关全局参数并按版本区分处理MySQL 8 之前的版本以及 MariaDB 10.3 之前的版本会额外设置innodb_file_format Barracuda、innodb_large_prefix ON脚本同时创建utf8mb4编码的gogs库。mysql -u root -p scripts/mysql.sql注意 scripts/mysql.sql 中包含DROP DATABASE IF EXISTS gogs;如果gogs库已存在执行该脚本会先删库再重建。所以它只适合首次初始化库里有数据时不要重复执行。建好库之后在custom/conf/app.ini的[database]段把后端指定为 MySQL对 MariaDB 同样使用TYPE mysqlGogs 通过 MySQL 线协议连接 MariaDB。相关配置键在仓库默认配置 conf/app.ini 的[database]段中有注释例如TYPE、HOST、NAME、USER、PASSWORD。相关文档排错条目原文docs/asking/troubleshooting.mdx数据库初始化与版本要求docs/getting-started/installation.mdx建库脚本scripts/mysql.sql【免费下载链接】gogsThe painless way to host your own Git service项目地址: https://gitcode.com/GitHub_Trending/go/gogs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考