Ubuntu 16.04 上 MySQL 升级失败

Dyv*_*vel 1 mysql linux ubuntu

我正在运行 Ubuntu 16.04(全新安装 - 无需升级)。MySQL 运行良好 - 但当我尝试更新 MySQL 时出现此错误:

apt-get install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up mysql-server-5.7 (5.7.16-0ubuntu0.16.04.1) ...
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
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.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   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.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.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.1).
Checking databases.

ALL DATABASES RETURNED OK

Error occurred: Error during call to mysql_check.
mysql_upgrade failed with exit status 4
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

虽然它正在运行,但我不喜欢错误。你们知道如何解决这个问题吗?

运行 dpkg -l | grep mysql 给出:

dpkg -l | grep mysql 
ii  libdbd-mysql-perl                  4.033-1ubuntu0.1                                     amd64        Perl5 database interface to the MySQL database
ii  libmysqlclient20:amd64             5.7.16-0ubuntu0.16.04.1                              amd64        MySQL database client library
ii  mysql-client                       5.7.16-0ubuntu0.16.04.1                              all          MySQL database client (metapackage depending on the latest version)
ii  mysql-client-5.7                   5.7.16-0ubuntu0.16.04.1                              amd64        MySQL database client binaries
ii  mysql-client-core-5.7              5.7.16-0ubuntu0.16.04.1                              amd64        MySQL database core client binaries
ii  mysql-common                       5.7.16-0ubuntu0.16.04.1                              all          MySQL database common files, e.g. /etc/mysql/my.cnf
iU  mysql-server                       5.7.16-0ubuntu0.16.04.1                              all          MySQL database server (metapackage depending on the latest version)
iF  mysql-server-5.7                   5.7.16-0ubuntu0.16.04.1                              amd64        MySQL database server binaries and system database setup
ii  mysql-server-core-5.7              5.7.16-0ubuntu0.16.04.1                              amd64        MySQL database server binaries
ii  php-mysql                          1:7.0+45+deb.sury.org~xenial+1                       all          MySQL module for PHP [default]
ii  php5.6-mysql                       5.6.27-1+deb.sury.org~xenial+1                       amd64        MySQL module for PHP
ii  php7.0-mysql                       7.0.12-1+deb.sury.org~xenial+1                       amd64        MySQL module for PHP
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 5

我自己也遇到过这个问题,我相信这与升级过程如何停止/启动/重新启动 MySQL 有关。

这是我在尝试升级 MySQL 失败后所做的解决方法。

  1. 正常启动 MySQL,通常以 root 身份“service mysql start”。
  2. 以 root 身份执行“mysql_upgrade --defaults-file=/etc/mysql/debian.cnf”。希望它能够顺利完成,或者表明 MySQL 已经升级。
  3. 使用您喜欢的编辑器编辑文件“/var/lib/dpkg/info/mysql-server-5.7.postinst”。在第 320 行(取决于版本)附近找到行“mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?”。注释该行(在行前面加上“#”),如果应该看起来像“#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?”。保存文件并退出编辑器。
  4. 重新运行升级过程,它应该表明 MySQL 现已升级。

在某些时候,我将进一步深入了解为什么“mysql_upgrade ...”调用在升级过程中失败,但不仅仅是从命令行调用失败。但我还没有使用这种方法进行几次升级迭代而没有出现问题。

希望这可以帮助。

'紧握