Échec de la mise à niveau PG::UniqueViolation -- impossible de créer l'index unique "unique_post_links_ccnew"

I’ve got a standard install that is failing to upgrade to 2.8.0.beta2 with this error:

PG::UniqueViolation: ERROR:  could not create unique index "unique_post_links_ccnew"

it’s from

I, [2021-06-25T18:35:47.756688 #1]  INFO -- : == 20210525112226 RemoveLengthConstrainFromTopicLinkUrl: migrating ============

It doesn’t look like a corrupt index.

Does this help?

[6] pry(main)> TopicLink.where(url: bad_url).pluck(:id, :topic_id, :post_id, :user_id)
=> [[15733, 14351, 63616, 911], [16131, 14505, 63986, 911], [27141, 14505, 63986, 1152]]

I ended up just appending a badX to the duplicate URLs and then it worked. I’m not quite clear what problems this might generate in the future…

Beaucoup de bugs de corruption d’index dits « impossibles » dans les anciennes versions de Postgres, d’après notre expérience. En voyez-vous toujours ?

1 « J'aime »

Je pense que je ne l’ai pas vu depuis la mise à niveau vers pg12.

1 « J'aime »

Nous sommes allés jusqu’à PG13, et je pense que cela a surtout résolu le problème (index corrompus) pour nous, n’est-ce pas @sam ?

2 « J'aime »

@saj a résolu ce problème. Nous l’avons résolu dans notre infrastructure. La plupart des auto-hébergeurs l’ont depuis contourné.

Le mécanisme que nous utilisions auparavant pour mettre à niveau PG dans notre image open source présentait des problèmes de sécurité inhérents en raison des changements de libc sous le capot entre les versions de PG.

Je pense que le problème a maintenant largement disparu dans l’écosystème, bien que certaines anciennes mises à niveau puissent encore y être confrontées. Ce sera un cauchemar de corriger notre script de mise à niveau open source existant et de gérer l’énorme matrice des mises à niveau PG.

Cela dit, au moins nous sommes très conscients de la source du problème maintenant et sommes mieux placés pour y remédier à l’avenir.

2 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.