Re: pg_dumpall problem - duplicated users

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tom Lane napisał(a):

Bartosz Nowak <grubby@xxxxxx> writes:
Tom Lane napisał(a):
You could manually delete either row, probably better to zap the second
one:
delete from pg_shadow where ctid = '(1,25)';

Heh... i wish it was that easy - i tried it already :] When i delete the 'second' postgres user (with passwd set) PG is acting like there is no postgres account at all:
...
And i cannot modify row of 'first' postgres user (without passwd set) with or without 'second' present:
mw=> delete from pg_shadow where ctid = '(0,1)' ;
DELETE 0

Ugh.  That's looking more like you have a transaction ID wraparound
problem.  How long has it been since pg_shadow was last vacuumed?

You could try a "VACUUM FREEZE pg_shadow" and see if the rows act any
more normally after that.  (Better take a filesystem-level backup
first, so you can get out of it if that makes things worse.)

			regards, tom lane
We vacuum whole base regularly, and lately it was about week ago (then the problem occured). Since pg_dump don't work we are making filesystem-level backups, and still im experimenting on local copy of this db for safety.

VACUUM FREEZE pg_shadow changed the pg_shadow table:

select ctid,xmin,xmax,cmin,xmax,* from pg_shadow where usename = 'postgres';
ctid | xmin | xmax | cmin | xmax | usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
-------+------+-------+-------+-------+----------+----------+-------------+----------+-----------+-------------------------------------+----------+-----------
(0,1) | 1 | 50469 | 50469 | 50469 | postgres | 1 | t | t | t | | | (1,4) | 2 | 0 | 0 | 0 | postgres | 1 | t | t | t | md5c084502ed11efa9d3d96d29717a5e555 | |
(2 rows)

But rows still act unnormally :[, i.e.:

update pg_catalog.pg_shadow set passwd='test' where usename='postgres' and ctid = '(0,1)';
UPDATE 0
delete from pg_shadow where ctid = '(0,1)' ;
DELETE 0
delete from pg_shadow where usesysid = 1 and passwd != 'md5c084502ed11efa9d3d96d29717a5e555' ;
DELETE 0
delete from pg_shadow where usesysid = 1 ;
DELETE 1
select ctid,xmin,xmax,cmin,xmax,* from pg_shadow where usename = 'postgres'; ctid | xmin | xmax | cmin | xmax | usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
-------+------+-------+-------+-------+----------+----------+-------------+----------+-----------+--------+----------+-----------
(0,1) | 1 | 50469 | 50469 | 50469 | postgres | 1 | t | t | t | | |
(1 row)

update pg_catalog.pg_shadow set passwd='test' where usename='postgres' ;
UPDATE 0

pg_dumpall -i -U mw > test.sql
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: pg_class_aclcheck: invalid user id 1 pg_dump: The command was: select (select usename from pg_user where usesysid = datdba) as dba, encoding, datpath from pg_database where datname = 'alibi'
pg_dumpall: pg_dump failed on alibi, exiting

Greetings,
Bartek

--
Pozdrawiam,
GRUbY



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux