1. 安装禅道
1.1  选择适合您的安装方法
1.2  使用云禅道在线项目管理服务!
1.3  (推荐)windows用一键安装包安装
1.4  (推荐)linux用一键安装包
1.5  linux下用lampp集成包安装
1.6  使用源码包安装(MAC系统)
1.7  MAC下用XAMPP安装禅道
1.8  MAC下用XAMPP-VM安装禅道
1.9  禅道一键安装包里安装渠成软件
1.10  使用源码包安装(各系统通用)
1.11  宝塔面板安装禅道
1.12  华芸NAS在线安装
1.13  Centos7.4系统下安装httpd,mariadb,php7.2环境运行禅道
1.14  Centos8系统下安装httpd,mariadb,php7.2环境运行禅道
1.15  安装ioncube扩展
1.16  安装swoole扩展
1.17  Docker方式部署禅道
2. 禅道介绍
2.1  关于禅道项目管理软件
2.2  如何获得支持
2.3  关注我们
3. 升级禅道
3.1  选择和自己环境对应的升级方式
3.2  通过源代码方式升级(通用)
3.3  windows一键安装包的升级
3.4  linux一键安装包升级
4. 创建分组和用户
4.1  建立部门结构
4.2  添加一个用户帐号
4.3  批量维护帐号
4.4  设置分组,建立权限体系
5. 最简使用
5.1  使用禅道来进行项目任务管理
5.2  只使用禅道来做bug管理
5.3  只使用禅道来进行产品管理
5.4  个人使用禅道来做事务跟踪管理
6. 基本使用
6.1  禅道使用的基本流程和产品、研发、测试之间的三权分立
6.2  敏捷开发及scrum简介
6.3  禅道和scrum的对应关系
6.4  禅道的新手教程
6.5  创建第一个产品
6.6  添加第一个需求
6.7  开始第一个项目
6.8  确定项目要完成的需求列表
6.9  为需求分解任务
6.10  提交bug
6.11  视频教程:第一个演示项目
6.12  维护联系人
6.13  禅道的自定义功能
6.14  导入excel、csv参考文档
6.15  文档管理
6.16  工作方式的切换
6.17  操作获取积分功能
6.18  自定义必填项功能
6.19  如何排查产品、项目是否有访问权限
6.20  年度总结,工作内容统计一览表说明
7. 进阶使用
7.1. 使用流程
7.1.1  禅道使用流程图解
7.2. 个人管理
7.2.1  使用待办进行个人事务管理
7.2.2  关注需要自己处理的任务、需求、bug
7.2.3  通过我的档案查看或者修改个人信息
7.2.4  视频教程:禅道使用之个人篇
7.3. 产品经理篇
7.3.1  维护产品
7.3.2  维护产品线
7.3.3  创建和评审需求
7.3.4  变更和评审需求
7.3.5  需求的状态和研发阶段
7.3.6  需求的注意事项
7.3.7  维护产品模块
7.3.8  建立发布计划
7.3.9  建立发布
7.3.10  路线图
7.3.11  文档管理
7.3.12  主持产品会议
7.3.13  参与项目管理、演示和总结
7.3.14  需求的基本统计报表
7.3.15  视频教程:禅道使用之产品经理篇
7.4. 项目经理篇
7.4.1  建立项目
7.4.2  组建项目团队
7.4.3  确定项目要完成的需求列表
7.4.4  组织进行任务分解
7.4.5  召开每天的站立会议
7.4.6  通过燃尽图了解项目的进展
7.4.7  通过各种列表的各种功能了解项目进展
7.4.8  召开演示会议和总结会议
7.4.9  项目任务基本的报表统计
7.4.10  视频教程:禅道使用之项目经理篇
7.5. 开发团队篇
7.5.1  参加项目计划会议,分解任务
7.5.2  领取任务,并每天更新任务
7.5.3  通过看板和树状图查看任务
7.5.4  创建版本
7.5.5  申请测试
7.5.6  解决bug
7.5.7  文档管理
7.5.8  确认bug
7.5.9  视频教程:禅道使用之开发团队篇
7.6. 测试团队篇
7.6.1  维护bug视图模块
7.6.2  提交bug
7.6.3  验证bug,关闭
7.6.4  激活bug
7.6.5  找到自己需要的bug
7.6.6  维护测试用例视图
7.6.7  创建测试用例
7.6.8  测试套件、报告和公共用例库的维护
7.6.9  管理测试版本
7.6.10  执行用例,提交Bug
7.6.11  查看报表统计
7.6.12  视频教程:禅道使用之测试团队篇
8. 维护配置
8.1. 维护禅道
8.1.1  初始化管理脚本
8.1.2  备份禅道
8.1.3  恢复删除的资源
8.1.4  如何更新燃尽图
8.1.5  一键安装包如何实现mysql异机连接
8.1.6  linux一键安装包配置https
8.2. 配置禅道
8.2.1  设置是否允许匿名访问
8.2.2  如何配置email发信
8.2.3  如何成为超级管理员
8.2.4  配置禅道系统为静态访问
8.2.5  去掉禅道访问地址中的zentao
8.2.6  linux一键安装包去掉禅道访问地址中的zentao
8.2.7  集成禅道和svn
8.2.8  集成禅道和git
8.2.9  在第三方应用中集成禅道
8.2.10  第三方应用配置免密登录禅道
8.2.11  第三方应用集成禅道客户端进行消息通知
8.2.12  集成webhook
8.2.13  集成ZDOO
8.2.14  客户端集成
8.2.15  禅道的翻译功能
8.2.16  浏览器通知的设置
8.2.17  集成钉钉工作消息通知
8.2.18  集成企业微信应用消息通知
8.2.19  集成飞书群机器人
8.2.20  集成飞书消息通知
8.2.21  集成版本库、集成Jenkins,并进行构建
8.2.22  解决一键安装包密码口令弱的问题
8.3. 性能优化
8.3.1  nginx反向代理禅道502或504bad gateway错误
8.3.2  linux系统中配置session使用redis
9. 定制开发
9.1  二次开发机制
9.2  禅道的目录结构
9.3  找到要修改的文件
9.4  禅道的数据库结构
9.5  公用模块--common
9.6  如何登记菜单
9.7  如何登记权限
9.8  示例:如何修改禅道的语言提示?
9.9  示例:创建bug时可以设置优先级字段
9.10  使用在线扩展编辑器
9.11  二次开发编辑器和翻译功能限制使用说明
9.12  禅道项目管理软件打包规范1.1版本
10. 其他相关
10.1  禅道所使用到的第三方代码
10.2  禅道FAQ
10.3  如何帮助禅道项目
10.4  禅道商业服务
10.5  禅道项目的贡献者
10.6  历史修改记录

通过源代码方式升级(通用)

2012-09-24 15:42:53
王春生
164491
最后编辑:柳婷婷 于 2022-06-02 10:33:06
分享链接
摘要:本篇文章讲述如何通过源代码来升级禅道,适用于各种安装方式。

升级是为了保留旧版本中的数据,所以升级前一定要做好数据备份,以免升级过程中出现意外导致数据丢失。停止服务后,复制禅道代码目录作为备份以及数据库备份。

《通过源代码方式升级》视频链接: https://www.zentao.net/zentaovideo/zentao-use-80529.html



下面是通用的升级步骤:

一、升级步骤

  1. 在我们 网站下载新版本的源码包,以.zip结尾。
  2. 解压缩新的程序,覆盖到原来的目录。比如之前禅道安装的目录是在c:\xampp\zentao下面,则将代码覆盖到c:\xampp\zentao,操作方法:zentaopms/ 下面复制所有的文件到 xampp/zentao/ 下面粘帖。
  3. 执行升级程序。假设禅道的访问路径是http://192.168.1.99/zentao/,升级路径为http://192.168.1.99/zentao/upgrade.php。
  4. 根据向导,选择对应的版本,按照提示进行即可。
注意:不要将原来的程序移走,再解压缩新的版本,注意是覆盖!不要拷贝成c:\xampp\zentao\zentao

          不要下载.exe结尾的程序进行升级,那样子会覆盖原来的数据!

二、插件兼容问题

如果升级之前有安装过第三方朋友开发的插件,需要注意检查下是否和新版本的禅道兼容。如果发现升级之后无法访问,可以替换一下禅道运行代码:

1、把禅道当前运行代码文件夹改名(一般默认是 zentao 或者 zentaopms);

2、到 禅道官网下载相同版本禅道的源码,解压后放在同目录下面,保持文件夹名字和之前禅道运行代码文件夹名称相同 。

3、把原先文件夹中的  config/my.php  www/data/upload/1  www/.ztaccess   www/.htaccess 拷贝到新禅道文件夹对应目录,再访问禅道试试。


评论列表
ocm_dp 2022-08-09 20:32:53
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `get_monday`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `get_monday`(day date) RETURNS date
begin if date_format(day, '%w') = 0 then return subdate(day, date_format(day, '%w') - 6);
else return subdate(day, date_format(day, '%w') -1);
end if;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `get_sunday`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `get_sunday`(day date) RETURNS date
begin
if date_format(day, '%w') = 0 then return day;
else return subdate(day, date_format(day, '%w') - 7);
end if;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_cminited`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION qc_cminited($project int, $category varchar(30)) returns int
begin
declare products int default 0;
declare objects int default 0;
select count(*) from zt_projectproduct where project = $project into products;
select count(distinct product) from zt_object where project = $project and category = $category and type = 'taged' and product in (select product from zt_projectproduct where project = $project) into objects;
IF products = objects THEN
return 1;
ELSEIF products != objects THEN
return 0;
END IF;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_initscale`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION qc_initscale($project int, $category varchar(30), $estimateType varchar(30)) RETURNS float(10,2)
BEGIN
declare $estimate int default 0;
declare $storyEst varchar(30) default 'storyEst';
declare $requestEst varchar(30) default 'requestEst';
if($estimateType = $storyEst) THEN SELECT sum(storyEst) as estimate FROM zt_object WHERE id in(SELECT MIN(id) FROM zt_object WHERE project = $project and category = $category and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
end if;
if($estimateType = $requestEst) THEN SELECT sum(requestEst) as estimate FROM zt_object WHERE id in(SELECT MIN(id) FROM zt_object WHERE project = $project and category = $category and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
end if;
RETURN @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmplanscale`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmplanscale`($project int) RETURNS float(10,2)
BEGIN
declare programScale float (10,2) default 0;
select `scale` from zt_workestimation where project = $project into @programScale;
return @programScale;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmsrinitscale`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmsrinitscale`($project int) RETURNS float(10,2)
begin
declare scale int default 0;
declare inited int default 0;
select qc_cminited($project, 'SRS') into inited;
IF inited = 1 THEN
select qc_initscale($project, 'SRS', 'storyEst') into scale ;
return scale ;
ELSE
return 0;
END IF;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmsrrealscale`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmsrrealscale`($project int) RETURNS float(10,2)
BEGIN
declare totalEstimate float(10,2) default 0;
select CAST(sum(estimate) as DECIMAL(10,2)) as estimate from zt_story where id in (select story from zt_projectstory where project=$project) and type='story' and deleted='0' and closedReason not in ('subdivided', 'duplicate', 'willnotdo', 'cancel', 'bydesign') into totalEstimate;
return totalEstimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmurinitscale`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmurinitscale`($project int) RETURNS float(10,2)
begin
declare scale int default 0;
declare inited int default 0;
select qc_cminited($project, 'URS') into inited;
IF inited = 1 THEN
select qc_initscale($project, 'URS', 'requestEst') into scale;
return scale;
ELSE
return 0;
END IF;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmurrealscale`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmurrealscale`($project int) RETURNS float(10,2)
BEGIN
declare totalEstimate float(10,2) default 0;
select CAST(sum(estimate) as DECIMAL(10,2)) as estimate from zt_story where project=$project and type='requirement' and deleted='0' and closedReason not in ('subdivided', 'duplicate', 'willnotdo', 'cancel', 'bydesign') into totalEstimate;
return totalEstimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmallrequirementstage`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmallrequirementstage`($project int) RETURNS int(1)
BEGIN
select count(*) as products from zt_projectproduct where project = $project into @totalproduct;
select count(*) as product from (select product from zt_projectproduct where project in (select id from zt_project where project = $project and type = 'stage' and attribute = 'request' and deleted = '0') GROUP BY product) as product into @product;
if @totalproduct = @product then return 1;
end if;
RETURN 0;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmdesigntplandays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmdesigntplandays`($project int) RETURNS int(10)
BEGIN
select qc_pgmspecifiedtypeplanneddays($project,'design') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmdesigntrealdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmdesigntrealdays`($project int) RETURNS int(10)
BEGIN
select qc_pgmspecifiedtypeactualdays($project,'design') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmdevelplandays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmdevelplandays`($project int) RETURNS int(10)
BEGIN
select qc_pgmspecifiedtypeplanneddays($project,'dev') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmdevelrealdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmdevelrealdays`($project int) RETURNS int(10)
BEGIN
select qc_pgmspecifiedtypeactualdays($project,'dev') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmrequestplandays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmrequestplandays`($project int) RETURNS int(10)
BEGIN
select qc_pgmspecifiedtypeplanneddays($project,'request') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmrequestrealdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmrequestrealdays`($project int) RETURNS int(10)
BEGIN
select qc_pgmspecifiedtypeactualdays($project,'request') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmspecifiedtypeactualdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmspecifiedtypeactualdays`($project int,$attribute varchar(50)) RETURNS int(10)
BEGIN
select count(*) from zt_project where project = $project and attribute = $attribute and deleted = '0' and id not in (select parent from zt_project where project = $project and attribute = $attribute and grade = 2 group by parent) into @totalstory;
select count(*) from zt_project where project = $project and attribute = $attribute and deleted = '0' and realDuration > 0 and id not in (select parent from zt_project where project = $project and attribute = $attribute and grade = 2 group by parent) into @setstory;
select sum(realDuration) as realDuration from zt_project where project = $project and attribute = $attribute and deleted = '0' and realDuration > 0 and id not in (select parent from zt_project where project = $project and attribute = $attribute and grade = 2 group by parent) into @days;
if @totalstory != @setstory then
set @days = 0;
end if;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmspecifiedtypeplanneddays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmspecifiedtypeplanneddays`($project int,$attribute varchar(50)) RETURNS int(10)
BEGIN
select sum(planDuration) as planDuration from zt_project where project = $project and attribute = $attribute and deleted = '0' and id not in (select parent from zt_project where project = $project and attribute = $attribute and grade = 2 group by parent) into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmstageactualduration`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmstageactualduration`($product int, $attribute varchar(50)) RETURNS int(10)
BEGIN
select count(*) as totalduration from zt_project where id in (select project from zt_projectproduct where product = $product) and type = 'stage' and attribute = $attribute and deleted = '0' and id not in (select parent from zt_project where id in (select project from zt_projectproduct where product = $product) and attribute = $attribute and grade = 2 group by parent) into @totalduration;
select count(*) as setduration from zt_project where id in (select project from zt_projectproduct where product = $product) and type = 'stage' and attribute = $attribute and deleted = '0' and id not in (select parent from zt_project where id in (select project from zt_projectproduct where product = $product) and attribute = $attribute and grade = 2 group by parent) and realDuration > 0 into @setduration;
select sum(realDuration) as duration from zt_project where id in (select project from zt_projectproduct where product = $product) and type = 'stage' and attribute = $attribute and deleted = '0' and id not in (select parent from zt_project where id in (select project from zt_projectproduct where product = $product) and attribute = $attribute and grade = 2 group by parent) and realDuration > 0 into @duration;
if @totalduration != @setduration then
set @duration = 0;
end if;
return @duration;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmstageplannedduration`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmstageplannedduration`($product int, $attribute varchar(50)) RETURNS int(10)
BEGIN
select sum(planDuration) as duration from zt_project where id in (select project from zt_projectproduct where product = $product) and attribute = $attribute and deleted = '0' and id not in (select parent from zt_project where id in (select project from zt_projectproduct where product = $product) and attribute = $attribute and grade = 2 group by parent) and planDuration > 0 into @duration;
RETURN @duration;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmtestplandays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmtestplandays`($project int) RETURNS int(10)
BEGIN
select qc_pgmspecifiedtypeplanneddays($project,'qa') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmtestrealdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmtestrealdays`($project int) RETURNS int(10)
BEGIN
select qc_pgmspecifiedtypeactualdays($project,'qa') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_prddesigntplandays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_prddesigntplandays`($project int, $product int) RETURNS int(10)
BEGIN
select qc_pgmstageplannedduration($project, $product, 'design') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_prddesigntrealdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_prddesigntrealdays`($project int, $product int) RETURNS int(10)
BEGIN
select qc_pgmstageactualduration($project, $product, 'design') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_prddevelplandays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_prddevelplandays`($project int, $product int) RETURNS int(10)
BEGIN
select qc_pgmstageplannedduration($project, $product, 'dev') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_prddevelrealdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_prddevelrealdays`($project int, $product int) RETURNS int(10)
BEGIN
select qc_pgmstageactualduration($project, $product, 'dev') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_prdrequestplandays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_prdrequestplandays`($project int, $product int) RETURNS int(10)
BEGIN
select qc_pgmstageplannedduration($project, $product, 'request') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_prdrequestrealdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_prdrequestrealdays`($project int, $product int) RETURNS int(10)
BEGIN
select qc_pgmstageactualduration($project, $product, 'request') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_prdtestplandays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_prdtestplandays`($project int, $product int) RETURNS int(10)
BEGIN
select qc_pgmstageplannedduration($project, $product, 'qa') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_prdtestrealdays`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_prdtestrealdays`($project int, $product int) RETURNS int(10)
BEGIN
select qc_pgmstageactualduration($project, $product, 'qa') as days into @days;
return @days;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmdesgignrealesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmdesgignrealesthours`($project int) RETURNS float(10,2)
BEGIN
return qc_pgmesthoursbytype($project, 'design');
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmdesignrealhours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmdesignrealhours`($project int) RETURNS float(10,2)
BEGIN
return qc_pgmrealhoursbytype($project, 'design');
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmdevelrealesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmdevelrealesthours`($project int) RETURNS float(10,2)
BEGIN
return qc_pgmesthoursbytype($project, 'devel');
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmdevelrealhours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmdevelrealhours`($project int) RETURNS float(10,2)
BEGIN
return qc_pgmrealhoursbytype($project, 'devel');
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmrealesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmrealesthours`($project int) RETURNS float(10,2)
BEGIN
select CAST(sum(estimate) as DECIMAL(10,2)) as estimate from zt_task where project=$project and parent >= 0 and status != 'cancel' and deleted = '0' into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmesthoursbytype`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmesthoursbytype`($project int, $type char(30)) RETURNS float(10,2)
BEGIN
select CAST(sum(estimate) as DECIMAL(10,2)) as estimate from zt_task where project=$project and type = $type and parent >= 0 and status != 'cancel' and deleted = '0' into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmrealhours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmrealhours`($project int) RETURNS float(10,2)
BEGIN
select CAST(sum(consumed) as DECIMAL(10,2)) as consumed from zt_task where project=$project and parent >= 0 and status != 'cancel' and deleted = '0' into @consumed;
return @consumed;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmrealhoursbytype`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmrealhoursbytype`($project int, $type char(30)) RETURNS float(10,2)
BEGIN
select CAST(sum(consumed) as DECIMAL(10,2)) as consumed from zt_task where project=$project and type = $type and parent >= 0 and status != 'cancel' and deleted = '0' into @consumed;
return @consumed;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmrequestrealesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmrequestrealesthours`($project int) RETURNS float(10,2)
BEGIN
return qc_pgmesthoursbytype($project, 'request');
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmrequestrealhours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmrequestrealhours`($project int) RETURNS float(10,2)
BEGIN
return qc_pgmrealhoursbytype($project, 'request');
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmtestrealesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmtestrealesthours`($project int) RETURNS float(10,2)
BEGIN
return qc_pgmesthoursbytype($project, 'test');
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmtestrealhours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmtestrealhours`($project int) RETURNS float(10,2)
BEGIN
return qc_pgmrealhoursbytype($project, 'test');
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_getdevelfirstesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_getdevelfirstesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(devEst) as estimate FROM zt_object WHERE id in(SELECT MIN(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_getdesignfirstesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_getdesignfirstesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(designEst) as estimate FROM zt_object WHERE id in(SELECT MIN(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_getstoryfirstesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_getstoryfirstesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(requestEst) as estimate FROM zt_object WHERE id in(SELECT MIN(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_gettestfirstesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_gettestfirstesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(testEst) as estimate FROM zt_object WHERE id in(SELECT MIN(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_getfirstesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_getfirstesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(taskEst) as estimate FROM zt_object WHERE id in(SELECT MIN(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_getdevlastesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_getdevlastesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(devEst) as estimate FROM zt_object WHERE id in(SELECT MAX(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_getrequestlastesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_getrequestlastesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(requestEst) as estimate FROM zt_object WHERE id in(SELECT MAX(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_gettestlastesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_gettestlastesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(testEst) as estimate FROM zt_object WHERE id in(SELECT MAX(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_getdesignlastesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_getdesignlastesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(designEst) as estimate FROM zt_object WHERE id in(SELECT MAX(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_getlastesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_getlastesthours`($project int) RETURNS float(10,2)
BEGIN
SELECT sum(taskEst) as estimate FROM zt_object WHERE id in(SELECT MAX(id) FROM zt_object WHERE project = $project and category = 'PP' and type = 'taged' and product in (select product from zt_projectproduct where project = $project) group by `product`) into @estimate;
return @estimate;
END</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
DROP FUNCTION IF EXISTS `qc_pgmlastesthours`</p>
SQLSTATE[HY000]: General error: 1728 Cannot load from mysql.proc. The table is probably corrupted<p>The sql is:
CREATE FUNCTION `qc_pgmlastesthours`($project int) RETURNS float(10,2)
BEGIN
declare estimate float(10,2) default 0;
declare inited int default 0;
select qc_cminited($project,'PP') into inited;
IF inited = 1 THEN
select qc_getlastesthours($project) into estimate;
return estimate;
ELSE
return 0;
END IF;
END</p>
禅道-阿龙 2022-08-10 08:19:36 回复
是禅道升级过程产生的报错吗,是否对禅道进行过二次开发,可以添加页面上方QQ,邀请您进入技术交流群沟通禅道相关问题。
www 2022-07-16 18:41:01
请问从16.1升级到17.1时,报这个错怎么解决?

18:34:28 Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'company' in 'field list' in module\upgrade\model.php:1196
Stack trace:
#0 module\upgrade\model.php(1196): PDO->query('UPDATE zt_searc...')
#1 module\upgrade\model.php(160): upgradeModel->updateCompany()
#2 module\upgrade\model.php(104): upgradeModel->executeOpen('1_0beta', NULL, false, '')
#3 module\upgrade\control.php(151): upgradeModel->execute('')
#4 framework\base\router.class.php(2115): upgrade->execute('')
#5 www\upgrade.php(70): baseRouter->loadModule()
#6 {main}
thrown in module\upgrade\model.php on line 1196 when visiting /zentao/upgrade.php?m=upgrade&f=execute&fromVersion=
禅道-阿龙 2022-07-18 08:01:24 回复
升级时是否有多次点击执行sql按钮?
可以先还原下升级前的备份重新升级,注意不要多次点击升级时的执行sql按钮。
wowo 2022-07-14 18:00:55
从12.5.3升级到17.2,从17.2上下载 安装包下载中的 php 7.0, 按照步骤解压,cp文件 到 /opt/zbox/app/zentao 覆盖文件,打开http://IP:端口/zentao/upgrade 显示 :

安全起见,请删除 /opt/zbox/app/zentao/www 目录下的 install.php 和 upgrade.php 文件。
Please remove install.php and upgrade.php under /opt/zbox/app/zentao/www dir for security reason.

按照页面提示操作 删除两个文件之后,直接显示
16:52:54 Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'zentao.zt_workflow' doesn't exist in /opt/zbox/app/zentao/framework/router.class.php:350
Stack trace:

这个是什么原因呢? 不会跳转到升级教程的那个页面
cuiping 2022-07-15 08:52:07 回复
你好,请添加左上角商务同事qq,邀您进入技术交流群,截图沟通下这个问题。
张豪 2022-06-16 16:06:53
请问禅道企业版 4.0.1 可以直接升级到企业最新版吗
金凯 2022-06-16 16:39:02 回复
建议过渡下biz4.1.3,您可以在贵公司的技术支持群里获取支持
linwei 2022-05-10 16:12:04
docker用源码升级 重启服务器后变成没有升级之前的版本,想用源码升级他不会到升级的界面
禅道-Bee 2022-05-10 17:38:30 回复
具体是用的哪个镜像呢?官方镜像还是idoop的镜像?
desy 2022-05-09 16:46:03
请问从11.6版本直接升级到16.5版本,Windows的,原来版本的数据会受到影响吗?
cuiping 2022-05-09 17:30:58 回复
升级不会影响数据的,但一定先做好备份
升级请参考文档:http://www.zentao.net/book/zentaopmshelp/41.html
windows的话直接停止服务,备份整个xampp目录
备份请参考文档:http://www.zentao.net/book/zentaopmshelp/42.html
九城 2022-04-01 13:33:47
15.7.1升级16.5会出现空白页面,把sql复制到phpmyadmin里运行有报错 CREATE VIEW `view_datasource_5` AS select `id`,`name` from `zt_task` where `deleted` = '0' and vision = 'rnd'
> 1054 - Unknown column 'vision' in 'where clause'
禅道-阿龙 2022-04-01 13:46:13 回复
不需要复制升级sql到phpmyadmin,直接在禅道升级页面按照提示操作就可以。如有问题可以添加QQ 2468103332,邀请您进群解决问题。
hsk 2022-03-12 13:53:00
请问从9.8.3版本要先升级到哪个版本呢
于涛 2022-03-14 08:34:18 回复
您好,可以先升级到12.5.3做下过渡,然后在升级到需要的版本。
chenliang 2022-03-02 18:24:10
Linux一键安装包(版本11.6)能否16.4版本?
金凯 2022-03-03 08:38:44 回复
可以升级,下载16.4的源码包升级,升级前请做好备份
升级前请务必做好数据备份
升级请参考文档:http://www.zentao.net/book/zentaopmshelp/41.html
备份请参考文档:http://www.zentao.net/book/zentaopmshelp/42.html
小穆同志 2022-02-23 19:29:43
12.5.3采用源码升级的方式,升级到16.4。 浏览器访问/zentao/upgrade.php,到生成配置文件这一步,点击保存,直接返回到第一步了,无法升级,而且老系统也进不去了。
马超 2022-02-24 08:55:18 回复
升级页面是没有生成配置文件的页面,有可能是访问到了重装页面,重装页面会生成配置文件。
解决方案:可以使用备份还原,保证禅道可以正常访问,重新升级一下。
注意:访问网址不要访问到重装页面。重装页面网址是/zentao/install.php。
小穆同志 2022-02-24 09:37:47 回复
我再测试了下,发现 ,访问/zentao/upgrade.php 会自动跳转到 /zentao/install.php 。这可咋办
马超 2022-02-24 09:40:28 回复
可能是升级覆盖的方式不对,需要把zentaopms目录下所有内容覆盖到zentao/ 目录下。

小穆同志 2022-02-24 10:08:05 回复
重新覆盖了以后,可以执行下去,到了 /zentao/upgrade.php?m=upgrade&f=to15Guide&fromVersion=
然后这个页面上,默认选择 经典模式,点击 开始升级,然后就是还回到 /zentao/upgrade.php?m=upgrade&f=to15Guide&fromVersion=
没进入到下一步执行升级
于涛 2022-02-24 11:12:31 回复
有使用Nginx代理吗,方便的话可以添加下我们对应商务同事QQ2679672214,将具体的截图信息发给我们协助您解决看下
小穆同志 2022-02-24 16:14:49 回复
没有nginx代理,就是原包。我看web服务器是自带的apache。
于涛 2022-02-24 16:53:53 回复
可以添加下我们对应商务同事的QQ,将您邀请到我们的技术交流群中,将详细的页面截图发我们确认下呢
杰夫 2022-03-12 15:08:17 回复
这问题最后怎么解决的,遇到同个问题
1/12 1 2 3 4 5 6 7 8 9 10
发表评论
评论通过审核后显示。