The*_*lyn 134 upgrade mysql 16.04
我的整体升级进行得很顺利,但我留下了一个严重挥之不去的问题,即 mysql-server 无法自行安装,而且我没有尝试任何方法让它工作。
这是我在尝试安装/重新安装时看到的错误:
Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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
No apport report written because the error message indicates its a followup error from a previous failure.
Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
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)
我已经尝试完全删除它,尽管这样做会因为依赖关系(?)而尝试安装 MariaDB。任何关于我可以做些什么来解决这个问题的建议都将是最受欢迎的。
编辑:看起来我不是唯一一个:https : //bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279
The*_*lyn 130
@andrew-beerman 发布的说明走在正确的轨道上,尽管我不太清楚,而且似乎推荐了不必要的内容。我将上面的答案和错误线程中的有用帖子拼凑在一起。
这些是我为纠正此问题而采取的步骤:
备份您的my.cnf file
in/etc/mysql
并删除或重命名它
sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
Run Code Online (Sandbox Code Playgroud)/etc/mysql/mysql.conf.d/
使用删除文件夹
sudo rm -r /etc/mysql/mysql.conf.d/
Run Code Online (Sandbox Code Playgroud)确认您没有将my.cnf
文件藏在其他地方(我在我的家庭目录中做过!)或正在/etc/alternatives/my.cnf
使用
sudo find / -name my.cnf
Run Code Online (Sandbox Code Playgroud)备份和删除/etc/mysql/debian.cnf
文件(不确定是否需要,但以防万一)
sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.bak
sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
sudo apt install mysql-server
Run Code Online (Sandbox Code Playgroud)如果您的系统日志显示类似“mysqld:无法读取 '/etc/mysql/conf.d/' 的目录”的错误,请创建一个符号链接:
sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d
Run Code Online (Sandbox Code Playgroud)
然后服务应该能够以sudo service mysql start
.
这让它工作!
小智 62
今天我遇到了同样的问题,在尝试了许多解决方案后,我发现问题是sudo systemctl disable mysql.service
我用来禁用 MySQL 自动启动的命令,所以为了让它工作,我使用该命令重新启用了 MySQL 服务器sudo systemctl enable mysql.service
并再次运行升级过程和它完美地终止了。
knb*_*knb 21
您的错误消息包含以下行:
subprocess installed post-installation script returned error exit status 1
Run Code Online (Sandbox Code Playgroud)
然而,这installed post-installation script
并没有被提及。经过多次修补,我发现它的名字是(就我而言)/var/lib/dpkg/info/mysql-server-5.7.postinst
。
使用sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst
或您首选的编辑器打开此文件。
在顶部,将第 3 行(左右)更改set -e
为set -x
,保存文件。(选项-e
是“出错时退出-x
”,大概意思是“显式显示执行的命令”)
运行sudo dpkg --configure -a --log /tmp/dpkg.log
(--log 选项是可选的)。apt upgrade
如果您知道它将是唯一要升级的包,您也可以简单地运行。
现在您获得了mysql-server-5.7.postinst
bash 脚本的详细输出,您可以找出问题所在。
在我的情况下,它尝试(重新)运行失败mysql_upgrade
,但我的自定义 mysql 安装不需要。我确信我以前手动运行过它,成功过,一切都很好。
所以我注释掉了第 321 行(对于较旧的 mysqld 版本,请尝试第 281 行),
#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
和之前失败的命令,sudo apt upgrade
(再次运行),成功完成,dpkg 删除了这个包的错误状态。
现在,您可以设置回set -x
给set -e
(上述)。并可选择取消注释 mysql-upgrade 行。
如果您已将 mysql 数据分区移动到非标准位置,则可能需要额外的工作。我/var/lib/mysql/data
通过符号链接将我的从另一个驱动器移到了另一个驱动器。然后,您可能必须在postinst
脚本操作之前暂时删除符号链接。然后在运行包升级后重新创建它。
在mysqld debian 包的下一次次要版本升级后,/var/lib/dpkg/info/mysql-server-5.7.postinst
脚本的这个问题会再次出现。
And*_*man 18
这里的说明在我的服务器上修复了它:https : //bugs.mysql.com/bug.php?id=72722
我可以理解让您的系统处于不一致状态的痛苦,但不要担心整个情况并逐步清理系统。
首先让我们使用以下命令查看机器上所有 mysql 包的当前状态: dpkg -l | grep mysql(请粘贴不包括最后一列的输出)
第一列表示包的当前状态。以下是可能的选项:
ii) 已安装的 rc) 已删除的配置文件保留(这应该是您使用 'apt-get remove' 删除的所有软件包的状态,该状态不会删除 /etc 下的配置文件)
为此,您需要运行“apt-get purge <pkg-name>”,直到在上面的列表中看不到任何包。
请记住,一些非 mysql-server 包,如 python-mysql.connector 和 python-mysqldb,如果安装了,不需要删除,因为它们对这种情况没有任何影响,但如果删除可能会给使用它们的应用程序带来麻烦。
我们一定会尝试重新访问我们的文档,看看我们如何保护用户免于陷入这种麻烦。感谢您与我们详细分享您的反馈。
归档时间: |
|
查看次数: |
209752 次 |
最近记录: |