J3.x:Διπλότυπα usernames δημιουργούν πρόβλημα στην αναβάθμιση
From Joomla! Documentation
Σε κάποιους ιστοτόπους, η αναβάθμιση σε Joomla 3.9.16 δημιουργεί ένα σφάλμα στη βάση δεδομένων, που οφείλεται σε διπλότυπα ονόματα χρηστών. Μην πανικοβληθείτε αν αντιμετωπίσετε αυτό το πρόβλημα - η αναβάθμιση έχει σχεδόν ολοκληρωθεί χωρίς πρόβλημα, και η αλλαγή που απομένει να γίνει στη βάση δεδομένων μπορεί να εφαρμοστεί ακολουθώντας τις παρακάτω οδηγίες.
Σφάλμα που εμφανίζεται
Οι χρήστες βλέπουν ένα σφάλμα στη διαδικασία αναβάθμισης που αναφέρει μια αποτυχημένη αναζήτηση στη βάση δεδομένων, σφάλμα που οφείλεται σε ένα duplicated key στον πίνακα #__users
κατά την αναβάθμιση από έκδοση Joomla 3.9.15 ή παλαιότερη.
Εκδόσεις που αφορά
Αφορά τις ακόλουθες εκδόσεις Joomla!: 3.9.16
Ποια είναι η αιτία
Η ιστοσελίδα σας έχει περισσότερους από έναν χρήστες στον πίνακα #__users
με το ίδιο username - όνομα χρήστη, γεγονός που αποτελεί ζήτημα ασφάλειας, καθώς ο λανθασμένος λογαριασμός μπορεί να προσεγγιστεί από λάθος κάτοχο λογαριασμού.
Πώς να το επιλύσετε
Πρέπει να εξετάσετε τον πίνακα #__users
στη βάση δεδομένων και να φροντίσετε να μην υπάρχει δύο ή περισσότερες φορές το ίδιο όνομα χρήστη, είτε διαγράφοντας παλιούς λογαριασμούς χρηστών είτε αλλάζοντας τα ονόματα χρηστών - usernames, ώστε όλα τα ονόματα χρηστών να είναι μοναδικά. Μόλις ολοκληρώσετε τη διαδικασία αυτή, αν έχετε αναβαθμίσει στην έκδοση 3.9.16, τρέξτε το εργαλείο επιδιόρθωσης της βάσης δεδομένων - database schema fixer tool ώστε να ολοκληρωθεί η αναβάθμιση (αυτό το βήμα δεν απαιτείται , αν κάνετε τον έλεγχο πριν αναβαθμίσετε).
Το Joomla δεν μπορεί αυτόματα να προσδιορίσει ποιά ενέργεια πρέπει να υλοποιήσει, και για αυτό δεν μπορεί να προχωρήσει σε αυτό το βήμα για λογαριασμό σας - πρέπει η ενέργεια να γίνει από τον διαχειριστή της ιστοσελίδας.
Πρέπει να τρέξετε το ακόλουθο SQL Query στη βάση δεδομένων ώστε να εντοπίσετε τα διπλότυπα usernames:
SELECT username FROM #__users GROUP BY username HAVING COUNT(*) > 1
One possible way to make resolving this simpler might be to remove all users who have never visited the site. Though this should be done with care, and ensure to backup the table first. After running this query, you can check again how many duplicate users you have.
DELETE FROM #__users WHERE lastvisitDate = "0000-00-00 00:00:00"