View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001533 | SymmetricDS | Bug | public | 2014-01-16 07:31 | 2014-02-03 01:53 |
Reporter | azarubkin | Assigned To | chenson | ||
Priority | high | ||||
Status | closed | Resolution | fixed | ||
Product Version | 3.5.13 | ||||
Target Version | 3.5.14 | Fixed in Version | 3.5.14 | ||
Summary | 0001533: Unable to create trigger if primary key column excluded | ||||
Description | Hello all, I configured synchronization of table from store to corp. If I exclude PK column from synchronization, I get the following error: 2014-01-16 11:21:43,484 ERROR [post] [TriggerRouterService] [post-job-14] Failed to create triggers for events java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:872) at java.lang.StringBuilder.substring(StringBuilder.java:72) at org.jumpmind.symmetric.db.AbstractTriggerTemplate.buildColumnNameString(AbstractTriggerTemplate.java:559) at org.jumpmind.symmetric.db.AbstractTriggerTemplate.replaceTemplateVariables(AbstractTriggerTemplate.java:383) at org.jumpmind.symmetric.db.AbstractTriggerTemplate.createTriggerDDL(AbstractTriggerTemplate.java:261) at org.jumpmind.symmetric.db.AbstractSymmetricDialect.createTrigger(AbstractSymmetricDialect.java:301) at org.jumpmind.symmetric.service.impl.TriggerRouterService.rebuildTriggerIfNecessary(TriggerRouterService.java:1507) at org.jumpmind.symmetric.service.impl.TriggerRouterService.updateOrCreateDatabaseTriggers(TriggerRouterService.java:1378) at org.jumpmind.symmetric.service.impl.TriggerRouterService.updateOrCreateDatabaseTrigger(TriggerRouterService.java:1262) at org.jumpmind.symmetric.service.impl.TriggerRouterService.updateOrCreateDatabaseTriggers(TriggerRouterService.java:1252) at org.jumpmind.symmetric.service.impl.TriggerRouterService.syncTriggers(TriggerRouterService.java:1031) at org.jumpmind.symmetric.service.impl.TriggerRouterService.syncTriggers(TriggerRouterService.java:982) at org.jumpmind.symmetric.service.impl.TriggerRouterService.syncTriggers(TriggerRouterService.java:978) at org.jumpmind.symmetric.load.ConfigurationChangedFilter.syncEnded(ConfigurationChangedFilter.java:271) at org.jumpmind.symmetric.service.impl.DataLoaderService.loadDataFromTransport(DataLoaderService.java:415) at org.jumpmind.symmetric.service.impl.DataLoaderService.loadDataFromPull(DataLoaderService.java:265) at org.jumpmind.symmetric.service.impl.PullService.execute(PullService.java:129) at org.jumpmind.symmetric.service.impl.NodeCommunicationService$2.run(NodeCommunicationService.java:307) at org.jumpmind.symmetric.service.impl.NodeCommunicationService.execute(NodeCommunicationService.java:320) at org.jumpmind.symmetric.service.impl.PullService.pullData(PullService.java:99) at org.jumpmind.symmetric.job.PullJob.doJob(PullJob.java:39) at org.jumpmind.symmetric.job.AbstractJob.invoke(AbstractJob.java:177) at org.jumpmind.symmetric.job.AbstractJob.run(AbstractJob.java:224) at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:53) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) | ||||
Tags | No tags attached. | ||||
|
Don't know if it is a workaround or official solution, but I solved my problem by mentioning an alternate unique key in sync_columns. Probably it's still a bug because SymmetricDS should give sane warning at least, not stack trace. And I see no reason why one-way synchronization without primary key should be forbidden if you know what you're doing (there shouldn't be any synchronized tables with FKs on this table since PK gets new value). |
|
This applies to all platforms. You will still get the error if the only columns left are lob columns. |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-01-16 07:31 | azarubkin | New Issue | |
2014-01-16 10:19 | azarubkin | Note Added: 0000421 | |
2014-01-16 22:35 | chenson | Fixed in Version | => 3.5.14 |
2014-01-16 22:35 | chenson | Target Version | => 3.5.14 |
2014-01-16 22:35 | chenson | Note Added: 0000422 | |
2014-01-16 22:36 | chenson | Summary | Unable to create trigger in SQLite if primary key column excluded => Unable to create trigger if primary key column excluded |
2014-01-16 22:37 | chenson | Status | new => resolved |
2014-01-16 22:37 | chenson | Resolution | open => fixed |
2014-01-16 22:37 | chenson | Assigned To | => chenson |
2014-01-17 13:18 | chenson | Status | resolved => closed |
2014-02-03 01:53 | Changeset attached | => SymmetricDS trunk r7870 | |
2015-07-31 01:49 | chenson | Changeset attached | => SymmetricDS master a3de344b |