DROP USER 'anna'@'localhost'; W języku SQL wydano kwerendę, niestety jej wykonanie nie powiodło się i wystąpił błąd: #1396 - Operation DROP USER...
DROP USER 'anna'@'localhost';W języku SQL wydano kwerendę, niestety jej wykonanie nie powiodło się i wystąpił błąd: #1396 - Operation DROP USER failed for 'anna'@'localhost'. Powodem takiego zachowania bazy danych może być
DROP USER to standardowe polecenie MySQL i MariaDB.DROP USER nie podaje hasła, więc jego siła nie ma znaczenia.Błąd #1396 oznacza, że operacja na koncie użytkownika nie powiodła się z powodu stanu kont, a nie składni. Przy DROP USER najczęstsza przyczyna to brak konta: serwer nie może usunąć użytkownika, którego nie ma. Konto identyfikuje para nazwa i host, więc istniejące konto 'anna'@'%' nie zostanie znalezione przez zapis 'anna'@'localhost'.
Istniejące konta sprawdza się zapytaniem SELECT user, host FROM mysql.user;. Aby uniknąć błędu w skrypcie, używa się DROP USER IF EXISTS 'anna'@'localhost';. Ten sam kod błędu pojawia się przy CREATE USER, gdy konto już istnieje - komunikat zawsze nazywa operację, która się nie powiodła.
Hasło nie ma znaczenia przy usuwaniu konta: polecenie DROP USER w ogóle go nie podaje. Siła hasła bywa sprawdzana przy tworzeniu konta albo zmianie hasła, a wtedy serwer zgłasza inny błąd, mówiący wprost o niespełnionych wymaganiach.
DROP USER jest standardowym poleceniem MySQL i MariaDB, więc nie może być nieznane. Gdyby serwer go nie rozpoznał, zgłosiłby błąd składni, a nie błąd wykonania operacji.
Składnia polecenia jest poprawna: nazwa i host w apostrofach połączone znakiem @ oraz średnik na końcu. Błąd składni ma w MySQL własny kod (#1064) i komunikat „You have an error in your SQL syntax”. Komunikat #1396 informuje, że polecenie zostało zrozumiane, ale nie dało się go wykonać - w tym przypadku dlatego, że użytkownika anna nie ma w bazie.
Warto czytać nazwę operacji w komunikacie.