使用 ruby​​rep 进行 PostgreSQL 复制

Posted

技术标签:

【中文标题】使用 ruby​​rep 进行 PostgreSQL 复制【英文标题】:PostgreSQL replication with rubyrep 【发布时间】:2012-11-02 06:59:49 【问题描述】:

我是 ruby​​rep 新手,目前使用 ruby​​rep-1.2.0 版本进行 PostgreSQL Master-Master 复制。除了 bytea 之外的所有数据类型都被正确复制。在复制 bytea 列时,数据似乎被转义了两次。我正在使用 postgreSQL9.2 版本,我在 postgres 配置中尝试了 bytea_output = 'hex'bytea_output = 'escape' 选项,但没有任何运气。

左侧数据库 bytea 列值:

\xc30d0409030220f8eef5543ac6906cd234018e307bd602ca16a61e674a6c4368f8018b01c3ae3007ae0313a9e44dc661a97a61cc94032f3ed1921e5987e92ff723f674a903

左边的 bytea 数据被复制到右边的数据库中:

\x5c3330335c3031355c3030345c3031315c3030335c3030325c3034305c3337305c3335365c3336355c3132345c3037325c3330365c3232305c3135345c3332325c3036345c3030315c3231365c3036305c3137335c3332365c3030325c3331325c3032365c3234365c3033365c3134375c3131325c3135345c3130335c3135305c3337305c3030315c3231335c3030315c3330335c3235365c3036305c3030375c3235365c3030335c3032335c3235315c3334345c3131355c3330365c3134315c3235315c3137325c3134315c3331345c3232345c3030335c3035375c3037365c3332315c3232325c3033365c3133315c3230375c3335315c3035375c3336375c3034335c3336365c3136345c3235315c303033 

什么,我在 ruby​​rep/postgresql 配置中缺少什么?

【问题讨论】:

【参考方案1】:

在复制过程中一定有什么东西弄乱了这些值。在 PostgreSQL 9.1 中,我可以在 bytea 和 text 之间反复来回转换。

select 'test'::bytea;

返回 \x74657374

以下也返回相同的值:

select 'test'::bytea::text;
select 'test'::bytea::text::bytea;

这让我想知道 Ruby-rep 是否在双重转义数据本身,或者不是取消转义而是转义。

在这一点上,鉴于我在 PostgreSQL 方面的测试,我认为适当的回应是将其视为 ruby​​-rep 开发人员的错误。这一定是他们代码中的错误。

【讨论】:

以上是关于使用 ruby​​rep 进行 PostgreSQL 复制的主要内容,如果未能解决你的问题,请参考以下文章

V-REP与MATLAB进行通讯的方法

ROS中利用V-rep进行地图构建仿真

V-rep学习笔记:串口操作

cookie操作

V-rep学习笔记:机器人逆运动学解算

rep(“”,spaces1)中的错误:无效的'times'参数