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

MySQL升级报错‘Column count doesn't match value count at row 1’求助

MySQL升级失败(列数不匹配/系统表损坏)解决方法

错误核心分析

升级时的1136 Column count doesn't match错误,本质是旧版本的mysql.db系统表结构与MySQL 8.0.37的标准结构不一致,导致升级脚本的INSERT语句无法执行;使用--upgrade=MINIMAL跳过升级后,因系统表结构不兼容触发损坏警告。


常规修复步骤(优先尝试)

1. 停止MySQL服务

sudo systemctl stop mysql

2. 临时启动MySQL(跳过授权表与升级检查)

sudo mysqld_safe --skip-grant-tables --skip-upgrade &

3. 登录并备份系统表

mysql -u root

执行SQL备份关键系统表:

-- 备份mysql.db表
CREATE TABLE mysql.db_backup LIKE mysql.db;
INSERT INTO mysql.db_backup SELECT * FROM mysql.db;

-- 备份mysql.columns_priv表
CREATE TABLE mysql.columns_priv_backup LIKE mysql.columns_priv;
INSERT INTO mysql.columns_priv_backup SELECT * FROM mysql.columns_priv;

EXIT;

4. 停止临时进程并执行完整升级

sudo mysqladmin -u root shutdown
sudo mysql_upgrade -u root -p

输入root密码后等待升级脚本完成系统表结构修复。

5. 重启MySQL服务

sudo systemctl start mysql

备选方案:重置系统表(开发环境适用)

如果常规修复失败,说明系统表损坏严重,可重置系统表(会丢失所有用户权限,需重新配置):

1. 停止服务并备份数据目录

sudo systemctl stop mysql
sudo cp -r /var/lib/mysql /var/lib/mysql_backup

2. 初始化新系统表

sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql

执行后会生成临时root密码,可在/var/log/mysql/error.log中查看。

3. 启动服务并重置root密码

sudo systemctl start mysql
mysql -u root -p

输入临时密码后执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your-new-password';
EXIT;

4. 导入用户数据库备份

如果之前导出过业务数据库,用以下命令导入:

mysql -u root -p your-db-name < your-db-backup.sql

之后重新创建所需的用户与权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:35:00