我想将表从服务器 A 同步到 B,记录应该与源完全相同。这就像手动复制工作一样。
该方法从源记录中检索为 json,并将插入/更新到目标服务器以获取相同的表记录,包括版本字段。
我在从源更新到目标时遇到问题,我发现无论每个字段如何相同,它都会更新修改日期和版本字段。
在不关闭乐观锁定参数并绕过自定义"DefaultRecordListener"类的情况下强制更新这些字段(版本或日期)的任何解决方案
从 jOOQ 3.11 开始,无法使用开箱即用的功能绕过记录版本或时间戳的设置。我创建了一个功能请求以在jOOQ 3.12中实现此功能:https://github.com/jOOQ/jOOQ/issues/8924
有一些解决方法,所有这些解决方法都假定您已经关闭了数据复制逻辑中的Settings.executeWithOptimisticLocking
解决办法:使用RecordListener
如果您使用的是记录版本(而不是时间戳),则可以在存储记录之前将记录版本设置为version - 1
。这将导致版本再次更新为相同的值。一个黑客,但可能足够好。
解决办法:为此目的重新生成表
您可以再次重新生成此操作中涉及的所有表,而无需记录版本/时间戳,并使用这些替代生成的表进行数据复制。
解决办法:不要使用UpdatableRecord
与其使用UpdatableRecord
,不如编写实际的INSERT
语句。请注意,可以通过InsertSetStep.set(Record)
方法将任何Record
传递给INSERT
语句。它将具有与调用record.insert()
类似的效果,即只插入更改的字段。