我正在尝试安装/更新软件包,但每次由于 mysql-server 错误该过程都会失败:
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)
我确实清除并重新安装了 mysql-server,我甚至将 debian-sys-maint 的密码设置为空且不过期(它在开发计算机上,因此没有敏感数据)但问题仍然存在。
我不知道如何解决它,这非常烦人,因为现在我甚至无法更新我的系统,因为每次都涉及这个过程。
谢谢你的帮助!
答案1
我设法解决了这个问题,而不必清除所有内容。问题似乎是 sys 架构数据库从未创建过,所以解决方案如下:
- 克隆https://github.com/mysql/mysql-sys并
cd
进入克隆的文件夹。 - 在终端中,运行
mysql -u root -p < ./sys_57.sql
(或sys_56.sql
,取决于您的版本) - 享受 mysql_upgrade 再次工作。
我猜这可能是正如@skerit 所说的那样,升级脚本出了问题。
答案2
有人搞乱了升级脚本,而且是在 LTS 版本中。
主要问题在于系统架构的升级。如果您不想删除所有数据,可以像这样强制更新:
mysql_upgrade -uroot -p --verbose --skip-sys-schema
当然,这是一个肮脏的解决方法,因为系统模式现在不再是它应该的样子,但至少您可以继续使用 mysql。
答案3
我只删除了/var/lib/mysql/sys
目录,然后运行此命令:
mysql_update -u root -p
一切顺利。
答案4
我最终删除了所有 mysql 组件(mysql-server、mysql-server-5.7、mysql-server-core-5.7)和数据(/var/lib/mysql、/etc/mysql)并对其进行了全新安装。
现在一切都正常。
我认为 mysql 内部数据库在从 5.6 迁移到 5.7 期间以某种方式损坏或丢失数据(从更改日志中,用户表的列密码已被删除,以替换新的)
希望有帮助