[Bucardo-general] bucardo fails to replicate when the column name contains german umlauts

Christian Ritter lnxlists at lownoize.org
Mon Sep 2 12:06:15 UTC 2013


On 2013-09-02 13:48, Michelle Sullivan wrote:
> Christian Ritter wrote:
>> On 2013-09-02 11:49, Michelle Sullivan wrote:
>>> Christian Ritter wrote:
>>>> I have switched the query log on, and it looks like bucardo has
>>>> problems with reading the data from the source database.
>>>>
>>>>
>>>> my insert into database testa:
>>>> 2013-09-02 11:08:28 CEST LOG:  statement: INSERT INTO testtable 
>>>> VALUES
>>>> (1, '192.168.1.1', 'foobar');
>>>>
>>>> what bucardo tries to insert into database testb:
>>>> 2013-09-02 11:08:29 CEST LOG:  execute dbdpg_p14740_6: INSERT INTO
>>>> public.testtable (id, host_ip,"prüfsumme") VALUES ($1,$2,$3)
>>>> 2013-09-02 11:08:29 CEST DETAIL:  parameters: $1 = '1', $2 =
>>>> '192.168.1.1', $3 = NULL
>>>> 2013-09-02 11:08:29 CEST ERROR:  null value in column "prüfsumme"
>>>> violates not-null constraint
>>>> 2013-09-02 11:08:29 CEST STATEMENT:  INSERT INTO public.testtable 
>>>> (id,
>>>> host_ip,"prüfsumme") VALUES ($1,$2,$3)
>>>>
>>>> prüfsumme is quoted with "" which looks ok.
>>>>
>>>> client encoding is set to utf8:
>>>>
>>>> testa=# SHOW client_encoding;
>>>>  client_encoding
>>>> -----------------
>>>>  UTF8
>>>> (1 row)
>>>>
>>>
>>>
>>> Now that's more like it..  I'm betting the issue therefore is in 
>>> the
>>> bucardo_delta function(s) that insert the data into the table.
>>>
>>> On the source machine try the following (assuming 4.5.x - I don't 
>>> know
>>> on 4.99.7 except this won't work):
>>>
>>> SELECT * FROM bucardo.bucardo_delta WHERE rowid = '1'::text AND 
>>> rowid2 =
>>> '192.168.1.1'::text;
>>>
>>> this will give you the rows in the bucardo_delta table and you 
>>> should be
>>> able to see if the source data is actually NULL.
>>>
>>> If it is and there are no other rows the problem will likely be in 
>>> the
>>> delta() functions.  If not the the read of the data is incorrect.  
>>> If
>>> there are multiple rows and one is null (earliest txntime) then it 
>>> may
>>> be because you changed the column/table definition after a delta 
>>> was
>>> created and not replicated - in which case you will need to remove 
>>> the
>>> rows with something like:
>>>
>>> DELETE FROM bucardo.bucardo_delta WHERE rowid = '1'::text AND 
>>> rowid2 =
>>> '192.168.1.1'::text AND rowid3 IS NULL; (if there are other tables 
>>> you
>>> will need to specify the table OID in the DELETE as well.  Table 
>>> OIDs
>>> can be obtained on the source with something like:
>>>
>>> =# select relname, oid from pg_class where relname = 'hosts2evid';
>>>   relname   |  oid
>>> ------------+-------
>>>  hosts2evid | 32596
>>> (1 row)
>>>
>>> Regards,
>>>
>>> Michelle
>>
>>
>> bucardo delta looks good to me, so it looks like bucardo is unable 
>> to
>> read the data if there are umlauts in the column name.
>>
>> testa=# SELECT * from bucardo_delta;
>>  tablename | rowid |            txntime
>> -----------+-------+-------------------------------
>>      28039 | 1     | 2013-09-02 13:23:12.344017+02
>> (1 row)
>>
>> testa=# select relname, oid from pg_class where relname = 
>> 'testtable';
>>   relname  |  oid
>> -----------+-------
>>  testtable | 28039
>>
>>
>> testa=# SELECT * from testtable;
>>  id |   host_ip   | prüfsumme
>> ----+-------------+-----------
>>   1 | 192.168.1.1 | foobar
>> (1 row)
>>
>
> Ok is your version 4.5.x?
>
> My example select was for rows with a combined key, obviously by your
> data your primary key is just 'id' (I must have been asleep to miss 
> that
> :/ )
>
> If you are not using 4.5.x then what I'm talking about here probably
> does not apply or make sense.
>
> Now assuming 4.5...
>
> bucardo uses COPY to take the source rows and pass them to the
> target...  So your logging doesn't make sense for  4.5..

bucardo version is 4.5.0 <-got that from bucardo_ctl

-- Schema for the main Bucardo database
-- Version 4.5.0

The logs are from postgres, and there is no copy in the logs, only 2 
inserts

The full log is here:

http://pastebin.com/8CxrSFmU


Cheers

Christian



More information about the Bucardo-general mailing list