[Bucardo-general] Change primary key on table
michelle at sorbs.net
Tue May 24 17:30:50 UTC 2016
emanuel at proabakus.com.br wrote:
> Hi everyone,
> I needed remove and drop table in my bucardo instance (master1,
> master2, master3) servers, cause a table has created with a different
> primary key columns, so I change the column name. Example:
> create table a (a int primary key, b text) ;
> column a is wrong, instead of re-created the table with other column name
> drop table a ; create table a (pa int primary key, b text) ;
> when a executed these commands, bucardo get the first version on table
> a with a column "a" primary key. This make a generate
> "delta_public_a" to be created with column "a".
> several commands I executed but didn't work to remove table reference
> on bucardo environment.
> busardo purge, remove, etc etc.
> so, I made changes on bucardo delta tables (alter table
> bucardo.delta_public_a rename column a to pa;), change trigger
> functions ([new|old].a to [new|old].pa) and re-created index existents
> on my three masters instances.
> And work!
> My question is if exist a way on command line or script bash or perl
> to make this action.
If you don't have current running replication (as in changes to commit)
you could drop (cascade) the bucardo schema and reinstall... That would
be the quickest and simplest - otherwise if this is a working env with
this one problem you'll need to manually go through the bucardo tables
and remove the errant references (psql -U bucardo bucardo to see them)
More information about the Bucardo-general