请选择 进入手机版 | 继续访问电脑版
查看: 2459|回复: 79

[杂谈] 升级X3.5常见问题汇总

[复制链接]

9

主题

1324

回帖

2552

积分

应用开发者

贡献
0 点
金币
1181 个
发表于 2022-12-23 10:24:20 | 显示全部楼层 |阅读模式


Q001:GBK编码升级后用户反馈无法登录?
A001:您升级前为GBK或BIG5编码,由于X3.5适配的UCenter 1.7.0 更新了数据库编码,为了防止本地化编码版本内以本地化编码的安全提问内的非 ASCII 文字导致用户登录受阻,因此如您站点为本地化编码则将为您清空安全提问,请将此情况如实告知用户,并要求用户在登录时请不要输入安全提问。(如您希望自行编写兼容代码,请自行在后续流程选择不清空用户的安全提问。)


Q002:升级UCenter 1.7.0报错(Warning: fopen(../data/logs/X3.5_upgrade_ucenter.php): failed to open stream: No such file or directory in uc_server/update_ucenter_adult.phpon line990)
A002:需要给UC目录(通常为/uc_server/)的升级日志目录(/data/logs/)赋予写权限。


Q003:升级完毕后还一直提示“升级数据”https://www.dismall.com/thread-14698-1-1.html
A003:升级关闭站点的提示语吧?升级后记得重新打开站点。


Q004:升级Ucenter 7.0时显示数据库members表里缺少email这个字段
A004:标准Ucenter必定存在email字段的,此提示一般是以前某些修改导致email字段不存在或未被设置为索引,进入数据表(使用PhpMyAdmin)将pre_ucenter_members表的email字段设置为索引后再升级。


Q005:升级后网站变的非常缓慢(MySQL5.5)
A005:当 MySQL < 5.7 或 MariaDB < 10.2 时, InnoDB 性能下降较为严重,因此在生产系统上运行的站点应升级版本至 MySQL >= 5.7 或 MariaDB >= 10.2 以避免此问题。


Q006:升级后用户IP都变成一样的了(开启了CDN)
A006:Discuz!X3.5使用CDN时,获取用户真实IP(https://www.dismall.com/thread-14651-1-1.html


Q007:升级过程中提示Specified key was too long; max key length is 767 bytes
A007:这是由于X3.5将升级数据库为InnoDb引擎,索引字段长度和Myisam不同,需要看报错中的具体表,进行索引字段长度变更,一般255的,建议变更为190


Q008:升级过程中提示(1061) Duplicate key name 'gpmid'ALTER TABLE common_member_grouppm ADD INDEX gpmid(gpmid);
A008:应该是升级出错后又直接再次执行升级文件导致的,升级出错后建议回滚数据后再重新操作。同时,针对该问题,回滚数据后可以进入“pre_common_member_grouppm”数据表检查索引gpmid是否存在,如存在,可以先予以删除再操作升级


Q009:升级过程中提示(1062) Duplicate entry '***' for key 'username'ALTER TABLE common_member CONVERT TO CHARACTER SET utf8mb4COLLATE utf8mb4_unicode_ci;(common_member也可能是common_member_archive)
A009:首先,这一般是UC升级1.7.0后UC里应用通信失败导致改名通知未被全部执行就进行了X程序升级引起的,解决方法有多种。
  • 其一,完全恢复所有数据后,重新升级UC之后,进入UC后台,确保通信成功,且“数据列表-通知列表”中重命名用户通知全部成功,此时再执行X程序升级则无虞;
  • 其二,进入数据库,执行语句:
    1. select uid from pre_ucenter_members where username in (select username from pre_ucenter_members group by convert(username using utf8mb4) collate utf8mb4_unicode_ci having count(1) > 1)
    复制代码
    再将异常用户改名,如果UC表查询无异常,上述语句中表名可以更换为(pre_common_member_archive)
  • 其三,进入数据库,执行语句
    1. update `pre_common_member` inner join `pre_ucenter_members` on `pre_common_member`.uid  = `pre_ucenter_members`.uid  set `pre_common_member`.username = `pre_ucenter_members`.username
    复制代码
    1. update `pre_common_member_archive` inner join `pre_ucenter_members` on `pre_common_member_archive`.uid  = `pre_ucenter_members`.uid  set `pre_common_member_archive`.username = `pre_ucenter_members`.username
    复制代码


Q010:升级后有的帖子无法回复,会报错 (1062) Duplicate entry '***-*' for key 'PRIMARY'
A010:先检查站点配置文件config/config_global.php 里面数据库CONFIG DB部分是否存在一行为$_config['db']['common']['engine'] = 'innodb';,若不存在,请加入一行内容为
  1. $_config['db']['common']['engine'] = 'innodb';
复制代码
。若存在,可能升级失败,建议回滚数据重新升级




我知道答案 回答被采纳将会获得5 金币 已有78人回答

评分

参与人数 1金币 +2 收起 理由
Killer + 2 很给力!

查看全部评分

回复

使用道具 举报

5

主题

29

回帖

37

积分

初学乍练

贡献
0 点
金币
2 个
发表于 2022-12-24 10:22:27 | 显示全部楼层
Q004:升级Ucenter 7.0时显示数据库members表里缺少email这个字段
A004:标准Ucenter必定存在email字段的,此提示一般是以前某些修改导致email字段不存在或未被设置为索引,进入数据表(使用PhpMyAdmin)将pre_ucenter_members表的email字段设置为索引后再升级

还是提示错误哦。
回复 支持 反对

使用道具 举报

5

主题

29

回帖

37

积分

初学乍练

贡献
0 点
金币
2 个
发表于 2022-12-24 10:30:22 | 显示全部楼层

按照这个方法成功了。
可能之前是索引后数据在更新中,没那么快恢复。
回复 支持 反对

使用道具 举报

25

主题

526

回帖

612

积分

自成一派

贡献
4 点
金币
27 个
发表于 2022-12-24 16:27:35 | 显示全部楼层
感谢~ 非常及时的错误指南;除了这些还有其他奇奇怪怪的问题...
回复 支持 反对

使用道具 举报

7

主题

8

回帖

22

积分

初学乍练

贡献
0 点
金币
6 个
发表于 2022-12-25 13:51:25 | 显示全部楼层

discuz3.5正式版发布了,自己安装了尝试下,发现帖子标题字符还是限制在80个字符,也就是40个汉字以内。
好多人反馈过这个问题,说在3.5正式版里更改,怎么还没更改?还是压根不打算更改?
另外,感觉没有多少新功能方面的增加,只是更换了外壳。这么多年过去了,应该增加一些新功能,可惜没有。 1.jpg
回复 支持 反对

使用道具 举报

9

主题

1324

回帖

2552

积分

应用开发者

贡献
0 点
金币
1181 个
 楼主| 发表于 2022-12-25 18:37:28 | 显示全部楼层
xyit 发表于 2022-12-25 13:51
discuz3.5正式版发布了,自己安装了尝试下,发现帖子标题字符还是限制在80个字符,也就是40个汉字以内。
...

后台-全局-用户权限,去看一下
回复 支持 反对

使用道具 举报

2

主题

18

回帖

24

积分

初学乍练

贡献
0 点
金币
3 个
发表于 2023-1-1 10:09:47 | 显示全部楼层
升级成功,但部分通知发送失败,请您登录 UCenter 检查更名通知是否全部发出,如发送失败请检查站点与 UCenter 间的通信是否正常,通知全部成功发出后方可继续升级其余应用。

uc与论坛“通信成功”
点开uc的通知,发现有失败有成功的,手动点,全部成功。
接下来在升级BBS时,
Fatal error: Uncaught Error: Call to undefined function getglobal() in /www/wwwroot/*/source/class/discuz/discuz_error.php:336 Stack trace: #0 /www/wwwroot/*/source/class/discuz/discuz_error.php(183): discuz_error::write_error_log('<b>Call to unde...') #1 /www/wwwroot/*/source/class/class_core.php(121): discuz_error::exception_error(Object(Error)) #2 [internal function]: core::handleException(Object(Error)) #3 {main} thrown in /www/wwwroot/*/source/class/discuz/discuz_error.php on line 336
回复 支持 反对

使用道具 举报

9

主题

1324

回帖

2552

积分

应用开发者

贡献
0 点
金币
1181 个
 楼主| 发表于 2023-1-1 10:13:56 | 显示全部楼层
wjwh 发表于 2023-1-1 10:09
uc与论坛“通信成功”
点开uc的通知,发现有失败有成功的,手动点,全部成功。
接下来在升级BBS时, ...

图挂了,报错信息不知道你是在哪个地址下报的错误
回复 支持 反对

使用道具 举报

2

主题

18

回帖

24

积分

初学乍练

贡献
0 点
金币
3 个
发表于 2023-1-1 10:19:09 | 显示全部楼层
湖中沉 发表于 2023-1-1 10:13
图挂了,报错信息不知道你是在哪个地址下报的错误

url/install/update_adult.php
第一步就出错了
discuz_error.php第336行是uid
回复 支持 反对

使用道具 举报

2

主题

18

回帖

24

积分

初学乍练

贡献
0 点
金币
3 个
发表于 2023-1-1 10:55:29 | 显示全部楼层
奇怪,'UC_KEY'值不一致竟然也提示通讯成功。
更奇怪的是,通知列表这里重复的ID竟然每分钟只运行4个,也没个进度条
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

添加有偿服务QQ
添加有偿服务微信