您的位置:首页 > 产品设计 > UI/UE

Bugzilla 4.1 版delete product时提示“visibility_value_id is not a valid parameter for the Bugzilla::Field::match”

2010-10-12 19:16 459 查看
由于同事没了解清楚,把QA添加version的要求理解成了添加产品了,导致我在bugzilla上面多添加了两个产品。一大早QA就找来说这件事,我的工作就是要把多添加的两个产品删除。结果删除时,提示“visibility_value_id is not a valid parameter for the Bugzilla::Field::match function.”

问题出来了,当然要解决了,找来找去搜来搜去也没搜出个名堂,向同事请教吧,热心的BX直接跑过来帮忙查看,perl写的bugzilla不熟,再询问相对熟悉perl的team, 结果一年多前的读书会学了后没用,大家都几乎忘了,那就google和baidu吧,弄了半天找不到解决方法,LF就提议直接从数据库删除吧,如果直接在控制台操作,又不知道对应的数据在哪个表中,LF想起大学时用过.exe版的mysql数据库管理工具,大家开始搜呀搜,经历了上当后终于在百度搜到了一个工具"MySQL Query Browser.exe",也终于可以下载使用。找找mysql指令,查找出两个产品所在的位置,直接删除,结果不允许,可以删除的选项是灰掉不可用的。不过既然可以找到,那就到控制台操作吧,这样就很快了,辗转到控制到,下指令,删除多余的两个产品。

删除后重新登录bugzilla查看,发现, product count显示的仍是多2条,并没有立即更新结果。大家再找,再找,吃饭时间到了也没找到,对于的product count计数存在哪儿, 午饭还没吃完,LF就回来了,刚找了一会,发现bugzilla上 product count竟然自己变正确了,神奇呀,原因不详。

下午,打开之前测试机上配置的bugzilla,发现delete product功能运行正常(版本是3.7), 对比了公司服务器与测试机上参数“visibility_value_id "存在的文件是否有不同,发现4.1版的比3.7版的要少,突发奇想,把相关3.7的文件copy到4.1中,看看能否有效,辛辛苦苦copy完毕,结果sandbox bugzilla更是错误连连,自我安慰,还好不是在正式版上测试。怎么办呢?把正式版4.1中的相同文件夹整个copy一份过来,保险指令cp -rp (可以保留文件夹中所有文件的属性不变),终于sandbox又正常如初了。

第三步,查查bugzilla官方网站吧,之前师兄说过,可以在上面看看这个bug是否有人提,那样就属于bugzilla本身的bug了/(^o^)/~

O(∩_∩)O哈哈~,真的有呀,太好了,总不会是我自己弄坏的了,上面还附一个可以修改的文件,下载下来,按照里面的脚本在对应的文件中添加删除代码,重新测试,ok,一切恢复正常了!!!4.1版也可以delete product了,O yeah!!

需在bugzilla配置文件ChoiceInterface.pm中sub controls_visibility_of_fields中 删除以下代码:

==========================================================

$self->{controls_visibility_of_fields} ||= Bugzilla::Field->match(
{ visibility_field_id => $self->field->id,
visibility_value_id => $self->id });
return $self->{controls_visibility_of_fields};

===========================================================

在相同位置添加以下代码:

=================================================

my $dbh = Bugzilla->dbh;

if (!$self->{controls_visibility_of_fields}) {
my $ids = $dbh->selectcol_arrayref(
"SELECT id FROM fielddefs
INNER JOIN field_visibility ON id = field_id
WHERE value_id = ? AND visibility_field_id = ?", undef,
$self->id, $self->field->id);

$self->{controls_visibility_of_fields} =
Bugzilla::Field->new_from_list($ids);
}

return $self->{controls_visibility_of_fields};

===============================================================

有时间了,还是要看看perl的,因为bugzilla在用,还有mysql相关的指令,每次都忘,用时还要在网上搜,哎…………

Karen
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐