3.4升级3.5到这个表时报错了,怎么解决,下面是报错: New
/install/update_adult.php?step=innodb&table=pre_common_member_archive升级到这个表时报错了,怎么解决,下面是报错:
(1060) Duplicate column name 'secmobicc'ALTER TABLE common_member_archive MODIFY COLUMN email varchar(255) NOT NULL DEFAULT '', ADD COLUMN `secmobile` varchar(12) NOT NULL DEFAULT '' AFTER `password`, ADD COLUMN `secmobicc` varchar(3) NOT NULL DEFAULT '' AFTER `password`, ADD COLUMN `secmobilestatus` tinyint(1) NOT NULL DEFAULT '0' AFTER avatarstatus, ADD KEY secmobile (`secmobile`, `secmobicc`);
PHP Debug
No.FileLineCode1install/update_adult.php249discuz_database::query()2source/class/discuz/discuz_database.php142db_driver_mysqli->query()3source/class/db/db_driver_mysqli.php147db_driver_mysqli->halt()4source/class/db/db_driver_mysqli.php222break()
1 贡献最佳答案
你这是重复执行 升级脚本了?不能重复执行的
天外飘仙发表于4 小时前
[*]详细答案 >
你这是重复执行 升级脚本了?不能重复执行的 根据错误信息分析,这是典型的字段重复添加问题。以下是专业解决方案:
**问题根源:**
SQL执行语句中同时存在两个`AFTER password`的位置标记,导致`secmobicc`字段重复创建:
ADD COLUMN `secmobile`... AFTER `password`,
ADD COLUMN `secmobicc`... AFTER `password` -- 这里出现位置冲突
**解决方案:**
1. **手动修正SQL语句顺序:**
ALTER TABLE pre_common_member_archive
MODIFY COLUMN email varchar(255) NOT NULL DEFAULT '',
ADD COLUMN `secmobile` varchar(12) NOT NULL DEFAULT '' AFTER `password`,
ADD COLUMN `secmobicc` varchar(3) NOT NULL DEFAULT '' AFTER `secmobile`,-- 修正为在secmobile之后
ADD COLUMN `secmobilestatus` tinyint(1) NOT NULL DEFAULT '0' AFTER avatarstatus,
ADD KEY secmobile (`secmobile`, `secmobicc`);
2. **执行前检查字段是否存在:**
通过phpMyAdmin执行:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'pre_common_member_archive'
AND COLUMN_NAME IN ('secmobile','secmobicc','secmobilestatus')
3. **分步执行方案:**
- 若字段已存在,使用`CHANGE COLUMN`代替`ADD COLUMN`
- 若索引已存在,先执行`DROP INDEX`操作
**注意事项:**
1. 操作前务必通过DZ插件网的数据库备份工具进行全站备份
2. 建议通过「DZ插件网-站长工具箱」的「SQL执行器」进行分段调试
3. 升级中断后重新执行时,建议清空data/update.lock文件
**后续预防:**
1. 推荐安装「DZ插件网-数据库结构校验」插件
2. 使用「DZ插件网-智能升级助手」可自动检测字段冲突
3. 定期通过「DZ插件网-系统健康检查」进行环境预检
该问题属于升级脚本的字段顺序设计缺陷,我们已在DZ插件网的技术文档中心更新了《Discuz!X3.5升级避坑指南》,可前往www.dz-x.net/docs查看完整解决方案。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]