Siebel Administration >  Index 'S_APPL_WT_IT_RX_P1' for table 'S_APPL_WT_IT_RX' would not be unique

Index 'S_APPL_WT_IT_RX_P1' for table 'S_APPL_WT_IT_RX' would not be unique

We got this error message while trying to to do a 'Get' on all Projects from the Siebel server
to our local database.

Similar error messages in the past could be like

Index 'S_LIST_COL_INTL_P1' for table 'S_LIST_COL_INTL' would not be unique

or

Integrity constraint violation: Index 'S_DDOWN_DYNDEST_U1' for table 'S_DDOWN_DYNDEST' will not be unique

 

The full error in Log file was

 

SQLError Statement 0 000000025b9716c0:0 2018-09-11 16:14:04

SQL Statement:

insert into SIEBEL.S_APPL_WT_IT_RX (ROW_ID,CREATED,CREATED_BY,LAST_UPD,LAST_UPD_BY,MODIFICATION_NUM,

CONFLICT_ID,PAR_ROW_ID,INACTIVE_FLG,REPOSITORY_ID,

TMPL_ITMHOLDERNAME,DB_LAST_UPD,SEQUENCE,DB_LAST_UPD_SRC,EXPR,

GROUP_NAME,HTML_ATTR,WEB_TMPL_NAME)

values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, {fn now()}, ?, 'default', ?, ?, ?, ?)


DBCLog DBCLogError 1 000000025b9716c0:0 2017-09-11 16:14:04

[Sybase][ODBC Driver][Adaptive Server Anywhere]

Index 'S_APPL_WT_IT_RX_P1' for table 'S_APPL_WT_IT_RX' would not be unique

 

Explanation:


This happens when the local database is using Sybase SQL anywhere. I have not seen it yet with Oracle XE yet.


What we discovered is that this happens when one or more objects (Like Workflows, Business Components )

are linked to one Project in local Database but with another Project in the Server. A majority of errors came

when one or more developers would not lock the current project of the object but would do a check out directly.

When the developer would check in this object, it would be linked to one of the projects he has already locked.

If you can find out exactly which projects should have which components, you could do a check and change the

Projects in your local database first.

If you have a Version control system, you could check which Objects and Projects were last changed and check against your local database.

Here are some SQLs you could use to map Applets and Business Services


select a.name as Applet_name, a.LAST_UPD as Applet_Updated, b.name as Project_name , b.LAST_UPD as Project_Last_Updated
from SIEBEL.S_APPLET a, SIEBEL.S_PROJECT b
where a.project_id = b.ROW_ID;

select a.name as Business_Service_name, a.LAST_UPD as BS_Updated, b.name as Project_name , b.LAST_UPD as Project_Last_Updated
from SIEBEL.S_SERVICE a, SIEBEL.S_PROJECT b
where a.project_id = b.ROW_ID;

In case you are interested, Business Components lie in SIEBEL.S_BUSCOMP, Workflows in siebel.s_wfr_proc,
Tables in SIEBEL.S_TABLE and Views in SIEBEL.S_VIEW.


In most cases, the best solution was to create a new DBXtract and download the local database.