Puncte:0

Nu se poate adăuga un utilizator nou din cauza erorii „Încălcarea constrângerii de integritate: intrare duplicată”.

drapel in

Începând cu 14 decembrie 2021, site-ul meu a început să creeze utilizatori cu ID-uri de utilizator reduse, chiar dacă cel mai mare ID de utilizator a fost 9317. Am gând ceva a fost schimbat într-o actualizare de bază pentru a reutiliza ID-urile care au fost eliberate prin anularea unui cont de utilizator. Totuși, am descoperit că de la acea dată, site-ul a încercat să refolosească fiecare ID începând cu 1.Jurnalul meu de erori este plin cu erori de genul acesta:

Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: încălcarea constrângerii de integritate:
1062 Dublați intrarea „281” pentru cheia „users.PRIMARY”: INSERT INTO „users” („uuid”, „langcode”)
VALORI (:db_insert_placeholder_0, :db_insert_placeholder_1); Matrice (
[:db_insert_placeholder_0] => 5ff1347c-439f-437e-ba3f-762f7350fda3
[:db_insert_placeholder_1] => ro ) în Drupal\Core\Entity\Sql\SqlContentEntityStorage->save()
(linia 811 din /home/drupal/webroot/rsc.byu.edu/web/core/lib/Drupal/Core/Entity/
Sql/SqlContentEntityStorage.php).

Exemplul de mai sus spune Dublați intrarea „381”. Următoarea eroare va spune Dublați intrarea „382” și așa mai departe.

Am citit postări care sugerează secvente tabelul conține următoarea valoare ID utilizator. Ale mele secvente tabelul conține valoarea 9330, ceea ce ar fi bine dacă ar fi folosit. Dar nu este.

Puncte:3
drapel in

După o lungă căutare, am observat pe o copie de rezervă dinainte de 14 decembrie 2021 utilizatorii masa uid câmpul a fost definit ca Atribute: UNSIGNED. ACUM (18 februarie 2022), cel uid câmpul este definit ca Atribute: nimic și Extra: AUTO_INCREMENT. AUTO_INCREMENT este nou.

Acest lucru m-a determinat să testez cu o copie de rezervă a site-ului meu. Desigur, înainte de 14 decembrie 2021, de fiecare dată când adaug un utilizator, valoarea din secvente tabelul este incrementat. Asta nu se mai întâmplă pe site-ul actualizat. În schimb, se blochează așa cum este descris mai sus.

Soluția a fost să rulăm următoarea interogare în baza de date:

utilizatori ALTER TABLE AUTO_INCREMENT = 3918; # ID existent cel mai mare a fost 3917

Aceasta a rezolvat problema.Presupun că într-o actualizare de bază instalată pe 14 decembrie 2021, codul s-a schimbat de la utilizarea secvente tabel pentru a utiliza AUTO_INCREMENT pe uid câmp în utilizatorii tabel și că, cumva, nu am reușit să fac o actualizare a bazei de date care ar fi setat corect valoarea AUTO_INCREMENT în utilizatorii masă pentru a evita această mizerie.

Sper că acest raport al durerii mele va ajuta pe cineva.

Rod avatar
drapel tr
Rod
În urma unui upgrade la Drupal 9.3.12, noi utilizatori nu au putut fi creați pe site. Mesajul de eroare pe care l-am primit când am încercat să adaug un utilizator fie prin site, fie prin drush a fost: „SQLSTATE[23000]: Încălcare constrângere de integritate: 1062 Duplicați intrarea „220” pentru cheia „users.PRIMARY...”. Interogarea dvs. ALTER TABLE a salvat ziua și a remediat problema pentru mine. Mulțumesc Marshall!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.