PHPmyAdmin无法创建存储过程,报#1558错误求助(Mac Ventura)
解决Mac Ventura上MariaDB 10.4.27的mysql.proc列数不匹配问题
核心原因
从MariaDB 10.1.8升级到10.4.27后,系统表mysql.proc的结构发生了变更,但升级脚本未正确执行,导致列数不符,无法创建存储过程。
手动修复步骤
1. 停止MariaDB服务
根据安装方式执行对应命令:
- Homebrew安装:
brew services stop mariadb
- 其他安装方式:
sudo /usr/local/mysql/support-files/mysql.server stop
2. 启动MariaDB跳过权限验证
启动时跳过权限表检查,方便修改系统表:
mysqld_safe --skip-grant-tables &
3. 连接到MariaDB
直接在终端输入:
mysql
4. 更新mysql.proc表结构
执行以下SQL语句添加缺失的列(对应10.1到10.4的结构变更):
ALTER TABLE mysql.proc ADD COLUMN sql_mode varchar(8192) NOT NULL DEFAULT '' AFTER comment; ALTER TABLE mysql.proc ADD COLUMN comment text NOT NULL AFTER sql_mode; ALTER TABLE mysql.proc ADD COLUMN character_set_client varchar(32) DEFAULT NULL AFTER comment; ALTER TABLE mysql.proc ADD COLUMN collation_connection varchar(32) DEFAULT NULL AFTER character_set_client; ALTER TABLE mysql.proc ADD COLUMN db_collation varchar(32) DEFAULT NULL AFTER collation_connection; ALTER TABLE mysql.proc ADD COLUMN body_utf8 text NOT NULL AFTER db_collation;
提示:如果某列已存在,直接跳过对应的ALTER语句即可
5. 退出并重启MariaDB
执行退出命令:
EXIT;
停止安全模式服务:
mysqladmin shutdown
正常启动服务:
brew services start mariadb # 或对应你的启动命令 sudo /usr/local/mysql/support-files/mysql.server start
6. 验证修复
重新打开PHPMyAdmin尝试创建存储过程,若不再弹出#1558错误,说明修复成功。
替代方案(手动修改无效时)
备份数据库后重新初始化系统表:
- 备份所有数据库:
mysqldump -u root -p --all-databases > all_dbs_backup.sql
- 停止服务后删除mysql数据目录(Homebrew路径一般为
/usr/local/var/mysql):
rm -rf /usr/local/var/mysql
- 重新初始化系统表(替换basedir为你的MariaDB实际安装路径):
mysql_install_db --user=mysql --basedir=/usr/local/Cellar/mariadb/10.4.27 --datadir=/usr/local/var/mysql
- 启动服务并恢复备份:
mysql -u root -p < all_dbs_backup.sql
内容的提问来源于stack exchange,提问作者Alex Catruc
相关产品推荐
相关产品推荐

