Most Popular
Recently Added
Recently Updated

Could not find trigger router for trigger history id

The sym_trigger_hist table contains a history of database triggers that were created on tables. Old triggers are dropped and new triggers are created whenever the SymmetricDS configuration is changed or if a configured table is altered. The history is needed to keep track of installed database triggers and metadata about data capture, such as column names. If the history is cleared, the system may respond with the following error:

Could not find trigger routers for trigger history id of 100.  Not processing data with the data id of 200

A data change was captured, but before it could sync, the trigger history record was cleared, which contained information about how to sync the data.

Assess the Data

First, determine if the captured data should still be synced. If the system has been running for some time since the first occurrence of the error, the data may be old and already overwritten with newer data.

select * from sym_data where data_id = 200;

Next, find the current trigger history record for the table. If there isn't one, then this table is no longer being captured and synced. If there is one, verify that the current list of column names matches the captured data. If the configuration has not changed and the table has not been altered, then the column names will match.

select * from sym_trigger_hist 
where source_table_name = (select table_name from sym_data where data_id = 200)
and inactive_time is null;

How to Fix

CASE 1: You need the data to sync and you verified there is a new trigger history record with matching column names. You should update the captured data to use the new trigger history record:

update sym_data
set trigger_hist_id = 
  (select trigger_hist_id from sym_trigger_hist 
  where source_table_name = (select table_name from sym_data where data_id = 200)
  and inactive_time is null)
where data_id = 200;

CASE 2: You determined the data is old and you do not want it. You should remove it from the capture log so the system stops wasting time on it.

delete from sym_data where data_id = 200;

Properties ID: 000024   Views: 2832   Updated: 10 years ago
Filed under: