提问者:小点点

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


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

但是,在那之后,与mysql相关的一切都不起作用了。我还更新了php5 mysql包。

我发现我必须安装php5-mysqlnd包使用命令sudo apt-get安装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黛布。苏里。组织~trusty 1


共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的弃权书,上面说,“我永远不会升级它”。

现在你想这么做,但你再也做不到了。

你需要做什么

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

apt-get update

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

将告诉您如果尝试升级当前持有的软件包会发生什么。您还可以尝试--修复缺失的--修复损坏的选项。但你需要的最重要的答案是,为什么这些包裹一开始就被扣留了。

如果你只是继续,忽视了持有的包裹,你就有可能打破一些不容易修复的东西。有一次,我在无意中升级了一个被搁置的Subversion包,该包是访问特定且非常挑剔的存储库所必需的。升级顺利,但我无法再提交源代码更改。