发新话题
打印

[已解决] 升级用户数据库到新版本时提示违反数据完整性约束( 此文章被查看:369次,被回复:8篇!! )

升级用户数据库到新版本时提示违反数据完整性约束

问题描述:我创建完成一个record type检入后,在升级数据库时提示违反数据完整性约束:因为defect有一条记录处于已重复状态,必须改变状态才能重新升级。
但是原有记录类型defect里没有定义从“已重复”状态到其他状态的转移操作。
这时应该怎么处理?
如果在CQ里彻底删除这条处于已重复状态的记录,是否可以解决这个问题?如何删除?哪位大侠指点一二,谢谢!

已从前端删除该记录。
楼下至截图以上回复均为正确回复,谢谢大家,看来得养成好习惯阿 呵呵

[ 本帖最后由 my_yj 于 2008-3-14 15:00 编辑 ]



© 本文为 my_yjSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

回复 楼主 的帖子

LZ,你创建的record type,怎么会关系到原有的defect呢?

 原有的defect中没有从"已重复"到其他状态的转移操作,那是否有删除的操作呢?

 如果有删除这个操作的话,执行删除操作将其删除就可了.

 



© 本文为 ty1227SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

回复 楼主 的帖子

删除这条记录就可以了
当前奉劝楼主 做任何有风险操作的时候 先备份一下数据库
然后再做  我就是以前没有这个习惯 吃了很大的亏



© 本文为 ljs53SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

引用:
原帖由 ljs53 于 2008-3-11 11:27 发表
删除这条记录就可以了
当前奉劝楼主 做任何有风险操作的时候 先备份一下数据库
然后再做  我就是以前没有这个习惯 吃了很大的亏
具体怎么彻底删除?虽然有定义删除和关闭,但是现在的状况是这条记录显示只能进行modify操作了

© 本文为 my_yj 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

回复 地毯 的帖子

如果你在该记录类型下定义了DELETE类型的Action,检查一下哪些用户有删除的权限,使用有权限的用户登录后进行删除操作,这种方式是最好的,因为删除是由CQ自己去知道的,数据的完整性也是由CQ来管理的。

此外,如果没有定义DELETE操作,可以到数据库中直接删除,这种方式是有风险的,如果仅仅是defect信息,是存储在用户数据库的Defect这张表中的,直接找到那条要删除的数据执行删除操作,但这样做就破坏了数据完整性,可能会出现莫名其妙的问题,比如,你将一条记录删除了,但history表中却仍然存储着该条记录对应的历史信息,但实际上它已经并不存在了。所有手动去删除需要对数据库数据之间的关联性有一定的了解,清楚要先删除哪些数据,后删除哪些数据。在执行数据库操作之前要对数据库先进行备份操作。

© 本文为 yunshan 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

原有记录类型既然有“已重复”这个状态,那某条记录处于这个状态也是合理的。
建议应该先考虑为什么有记录处于这个状态会报错,可以把报错信息截屏上来让大家给你分析分析。

© 本文为 tinali 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

这种情况也是蛮常见的,我也曾遇到过类似的情况:
比如原有流程中有个状态A,此流程应用一段时间后,在用户数据库中可能会有N(N>0)条状态为A的记录。后来因为某种原因需要去变更流程,状态A的名字可能被改成B,此时CheckIn schema的时候就会出现这样的错误,也就是数据不一致的情况。修改的模式中的状态与已有的记录直接违反了表之间的约束性条件。

所有一般在修改流程状态之前,要考虑并分析好,是否当前数据库中有记录的状态为将要修改的状态,如果有先更改所有记录的状态,然后做schema的修改操作。

© 本文为 yunshan 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

那楼主是否有修改“已重复”这个状态的名称呢,如果有,就是楼上yunshan分析的这个原因。可以进数据库查到这条记录,直接修改它的状态名就可以了,不用删掉也可以的。

如果没有修改状态名,那要考虑是其他原因。

© 本文为 tinali 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

错误截图



[ 本帖最后由 my_yj 于 2008-3-13 13:58 编辑 ]

© 本文为 my_yj 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

发新话题