PHP 将 mysql 升级到 v5.7 后 Ubuntu 出现问题

PHP having issue in Ubuntu after upgrading mysql to v5.7

我在 Ubuntu 上将 mysql 版本从 5.5 升级到 5.7。

但是,此后与 mysql 相关的任何东西都不起作用。我也更新了 php5-mysql 包。

我发现我必须安装 php5-mysqlnd 包使用命令 sudo apt-get install php5-mysqlnd。但是,它无法安装。消息:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help resolve the situation:

The following packages have unmet dependencies:
 php5-mysqlnd : Depends: phpapi-20121212
                Depends: php5-common (= 5.5.36+dfsg-1+donate.sury.org~trusty+1) but 5.6.18+dfsg-1+deb.sury.org~trusty+1 is to be installed
E: Unable to correct problems, you have held broken packages.

我的PHP版本5.6.18-1+deb.sury.org~trusty+1

您有一些包来自一个存储库,还有一些来自主存储库。此外,这就是错误出现的地方,其中一些软件包被 保留 。您选择升级它们:

php5-mysqlnd : Depends: phpapi-20121212
               Depends: php5-common (= 5.5.36...) but 5.6.18... is to be
                        installed
E: Unable to correct problems, you have held broken packages.

可能发生了什么

在之前的升级过程中,系统出现错误并提出了一些解决方案,其中之一是“...继续并打破依赖关系”。你选择了那个——也就是说,你签署了一份 APT 弃权书说,"I'm never gonna upgrade that"。

现在您想完全做到这一点 -- 但您再也做不到了。

你需要做什么

您需要识别那些被保留的软件包,确定它们被保留的原因,并相应地升级它们;或者回到 MySQL 5.5,如果一些更重要的依赖关系会被破坏。

apt-get update

apt-get --ignore-hold --dry-run upgrade

将告诉您如果您尝试升级当前保留的那些软件包会发生什么。您也可以尝试 --fix-missing--fix-broken 选项。但您需要的最重要的答案是,为什么这些包裹一开始就被搁置

如果您只是继续而忽略保留的包裹,您可能会破坏一些不容易修复的东西。当我无意中升级了访问特定且非常挑剔的存储库所需的保留的 Subversion 包时,我曾这样做过一次。升级顺利,但后来我无法再提交源更改。