Ubuntu 16.04: nie można z powodu problemu mysql-server-5.7

9

Próbuję instalować / aktualizować pakiety i za każdym razem, gdy proces kończy się niepowodzeniem z powodu błędu serwera mysql:

    sudo apt install graylog-server
    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances       
    Lecture des informations d'état... Fait
    graylog-server is already the newest version (2.0.3-1).
    0 mis à jour, 0 nouvellement installés, 0 à enlever et 10 non mis à jour.
    2 partiellement installés ou enlevés.
    Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
    Souhaitez-vous continuer ? [O/n] o
    Paramétrage de mysql-server-5.7 (5.7.12-0ubuntu1.1) ...
    Checking if update is needed.
    Checking server version.
    Running queries to upgrade MySQL server.
    mysql_upgrade: (non fatal) [ERROR] 1545: Failed to open mysql.event
    Checking system database.
    mysql.column_stats                                 OK
    mysql.columns_priv                                 OK
    mysql.db                                           OK
    mysql.engine_cost                                  OK
    mysql.event                                        OK
    mysql.func                                         OK
    mysql.general_log                                  OK
    mysql.gtid_executed                                OK
    mysql.gtid_slave_pos                               OK
    mysql.help_category                                OK
    mysql.help_keyword                                 OK
    mysql.help_relation                                OK
    mysql.help_topic                                   OK
    mysql.host                                         OK
    mysql.index_stats                                  OK
    mysql.innodb_index_stats                           OK
    mysql.innodb_table_stats                           OK
    mysql.ndb_binlog_index                             OK
    mysql.plugin                                       OK
    mysql.proc                                         OK
    mysql.procs_priv                                   OK
    mysql.proxies_priv                                 OK
    mysql.roles_mapping                                OK
    mysql.server_cost                                  OK
    mysql.servers                                      OK
    mysql.slave_master_info                            OK
    mysql.slave_relay_log_info                         OK
    mysql.slave_worker_info                            OK
    mysql.slow_log                                     OK
    mysql.table_stats                                  OK
    mysql.tables_priv                                  OK
    mysql.time_zone                                    OK
    mysql.time_zone_leap_second                        OK
    mysql.time_zone_name                               OK
    mysql.time_zone_transition                         OK
    mysql.time_zone_transition_type                    OK
    mysql.user                                         OK
    The sys schema is already up to date (version 1.5.0).
    Found 0 sys functions, but expected 21. Re-installing the sys schema.
    Upgrading the sys schema.
    mysql_upgrade: [ERROR] 1136: Column count doesn't match value count at row 1
    mysql_upgrade failed with exit status 5
    dpkg: erreur de traitement du paquet mysql-server-5.7 (--configure) :
     le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1
    Aucun rapport « apport » n'a été créé car le message d'erreur indique une erreur consécutive à un échec précédent.
                                                                                                                      dpkg: des problèmes de dépendances empêchent la configuration de mysql-server :
     mysql-server dépend de mysql-server-5.7 ; cependant :
     Le paquet mysql-server-5.7 n'est pas encore configuré.

    dpkg: erreur de traitement du paquet mysql-server (--configure) :
     problèmes de dépendances - laissé non configuré
    Des erreurs ont été rencontrées pendant l'exécution :
     mysql-server-5.7
     mysql-server
    E: Sub-process /usr/bin/dpkg returned an error code (1)

Usunąłem i ponownie zainstalowałem serwer mysql, nawet ustawiłem hasło na zero bez wygaśnięcia dla debian-sys-maint (jest na komputerze deweloperskim, więc nie ma wrażliwych danych), ale problem nadal pozostaje.

Nie wiem, jak to rozwiązać i jest to bardzo denerwujące, ponieważ teraz nie mogę nawet zaktualizować mojego systemu, ponieważ proces ten jest za każdym razem zaangażowany.

Dzięki za pomoc!

Charles-Antoine Fournel
źródło
@RaelGugelminCunha: Wątpię. Akceptowana odpowiedź na to pytanie różni się znacznie od odpowiedzi na powiązane pytanie.
David Foerster,

Odpowiedzi:

8

Udało mi się to naprawić bez konieczności czyszczenia wszystkiego. Wydaje się, że problem polega na tym, że baza danych schematu sys nigdy nie została utworzona, więc oto rozwiązanie:

  • Clone https://github.com/mysql/mysql-sys i cddo sklonowanego folderu.
  • W terminalu uruchom mysql -u root -p < ./sys_57.sql(lub sys_56.sql, w zależności od wersji)
  • Ciesz się, że mysql_upgrade działa ponownie.

Myślę, że to prawdopodobnie, jak powiedział @skerit, bałagan aktualizacji skryptów.

Marc
źródło
To działało, ale musiałem zalogować się do mysql i uruchomić plik sql za pomocą komendy source.
cnizzardini,
Zdarzyło mi się to ponownie przy użyciu Ubuntu 17.04. Tym razem najwyraźniej jest to niedopasowanie typu last_updatekolumny w wewnętrznej mysql.innodb_index_statstabeli. Nie wiem, czy to wina programu pakującego, MySQL czy kogoś innego, ale moim zaleceniem po moim doświadczeniu z MySQL od 16.04 jest migracja do MariaDB tak szybko, jak to możliwe. Na przykład jutro, jeśli to możliwe.
Marc
Miałem problemy z MariaDb, a także w zasadzie tak samo jak MySQL. Większość nowych rzeczy, które robię, to PostgreSQL.
cnizzardini
To wciąż się dzieje w Ubuntu 17.10 ... Uaktualniłem Ubuntu tylko dlatego, aby pozbyć się tej irytacji ... FFS UBUNTU!
BlackDivine
4

Ktoś pomylił skrypty aktualizacji i nie mniej w wydaniu LTS.

Główny problem polega na aktualizacji schematu systemu. Jeśli nie chcesz usuwać wszystkich danych, możesz wymusić aktualizację w następujący sposób:

mysql_upgrade -uroot -p --verbose --skip-sys-schema

Jest to oczywiście nieprzyjemne obejście, ponieważ schemat systemu nie jest już taki, jak powinien, ale przynajmniej możesz nadal używać mysql.

skerit
źródło
1
Tak, idioci z mysql spieprzyli
Stevie G.
0

Usunąłem tylko /var/lib/mysql/syskatalog, a następnie uruchomiłem to polecenie:

mysql_update -u root -p

Wszystko poszło dobrze.

Fabio Zeri
źródło
-2

W końcu usuwam wszystkie składniki mysql (mysql-server, mysql-server-5.7, mysql-server-core-5.7) i dane (/ var / lib / mysql, / etc / mysql) i robię nową instalację.

Wszystko działa teraz dobrze.

Wydaje mi się, że wewnętrzne dys mysql zostały w jakiś sposób uszkodzone lub brakuje danych podczas migracji z 5.6 do 5.7 (z dziennika zmian hasło kolumny z tabeli użytkownika zostało usunięte dla nowego)

mam nadzieję, że to pomoże

Charles-Antoine Fournel
źródło
Zalecam edycję tej odpowiedzi, aby rozszerzyć ją o szczegółowe informacje na temat tego, jak to zrobić. (Zobacz także Jak napisać dobrą odpowiedź? Zawiera ogólne porady na temat tego, jakie rodzaje odpowiedzi są uważane za najcenniejsze na AskUbuntu.)
David Foerster,