MySQL 在 MAMP 上无法启动

6

我已经使用MAMP相当长一段时间了,但几个月前它开始出问题。我后来在谷歌搜索和stackoverflow上查找解决方案,但目前还没有看到任何能帮助我的东西。

我搜索了一些文章,但是我感觉这些文章都没有帮助到我:

MAMP mysql不启动 我不确定我的数据目录路径在哪里?无论我在终端中输入什么都显示为未找到命令

Mysql服务无法启动,InnoDB init函数错误

MAMP mysql服务器无法启动。没有mysql进程正在运行 我尝试killall,但是显示“未找到属于您的匹配进程”错误

大约一小时前我的mqsql工作正常,但是apache没有工作,所以我找到了一篇文章,说要将Library/bin/envvars重命名为_envvars,apache在启动时工作了,但然后mysql没有工作。

我在php日志中没有收到任何错误消息,但这是我的apache和mysql日志。

这是从mysql错误日志底部的片段。

InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
170118 15:52:39  InnoDB: Unable to open the first data file
InnoDB: Error in opening ./ibdata1
170118 15:52:39  InnoDB: Operating system error number 35 in a file operation.
InnoDB: Error number 35 means 'Resource temporarily unavailable'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html
170118 15:52:39 InnoDB: Could not open or create data files.
170118 15:52:39 InnoDB: If you tried to add new data files, and it failed here,
170118 15:52:39 InnoDB: you should now edit innodb_data_file_path in my.cnf back
170118 15:52:39 InnoDB: to what it was, and remove the new ibdata files InnoDB created
170118 15:52:39 InnoDB: in this failed attempt. InnoDB only wrote those files full of
170118 15:52:39 InnoDB: zeros, but did not yet use them in any way. But be careful: do not
170118 15:52:39 InnoDB: remove old data files which contain your precious data!
170118 15:52:39 [ERROR] Plugin 'InnoDB' init function returned error.
170118 15:52:39 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
170118 15:52:39 [ERROR] Unknown/unsupported storage engine: InnoDB
170118 15:52:39 [ERROR] Aborting

170118 15:52:39 [Note] /Applications/MAMP/Library/bin/mysqld: Shutdown complete

170118 15:52:39 mysqld_safe mysqld from pid file /Applications/MAMP/tmp/mysql/mysql.pid ended

然后查看Apache错误日志

[Wed Jan 18 15:48:28 2017] [notice] Digest: generating secret for digest authentication ...
[Wed Jan 18 15:48:28 2017] [notice] Digest: done
[Wed Jan 18 15:48:28 2017] [notice] Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8zh DAV/2 PHP/5.3.6 configured -- resuming normal operations
[Wed Jan 18 15:48:31 2017] [notice] caught SIGTERM, shutting down
[Wed Jan 18 15:51:01 2017] [notice] Digest: generating secret for digest authentication ...
[Wed Jan 18 15:51:01 2017] [notice] Digest: done
[Wed Jan 18 15:51:01 2017] [notice] Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8zh DAV/2 PHP/5.3.6 configured -- resuming normal operations

我的端口是:apache 80 和 mysql 3306。

如果有人知道可能发生了什么事情,那就太棒了。


请查看此链接,可能会解决您的问题:https://dev59.com/LFsX5IYBdhLWcg3wf_k8#33746682 - Rafiqul Islam
1
请检查您的系统,以确保其他应用程序没有占用MySQL端口。 - bharat savani
6个回答

3

去年12月,当我在我的Mac上遇到同样的问题时,我进行了一些探索,并找到了一个非常简单的解决方案:

  1. 退出MAMP
  2. 在Finder中转到Applications/MAMP/db/mysql56/,并删除最后一个日志文件,在我的情况下是ib_logfile1。(在删除之前备份此文件可能是一个好主意,或者将其移动到不同位置而不是删除它。)
  3. 重新启动MAMP。就这样!

有些人报告说还需要删除ib_logfile0,但在我的情况下不需要。您可以在JuanFra.me博客中检查这一点,那里是我去年首次发布解决方案。

我不知道为什么或如何这个解决方案起作用,但似乎像JuanFra的博客中所报道的那样,对许多其他人有帮助。我希望它对您也有用。


0
停止MySQL有不同的情况,这取决于您是使用官方二进制安装程序、MacPorts还是Homebrew安装MySQL: MacPorts
sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql.plist
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql.plist

注意:此项在重启后仍然有效。 Homebrew

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

二进制安装程序

sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
sudo /Library/StartupItems/MySQLCOM/MySQLCOM restart

谢谢回复!抱歉没能及时回复,因为我没有意识到有评论,也没有收到通知。这个要放在我的终端窗口里吗? - kia4567
是的,通过这些命令您可以停止MySQL并重新启动它。由于您的问题是由打开的线程引起的,这些命令可以帮助您关闭它们。 - Mostafa -T

0
如果MySQL没有启动,很可能它已经在运行了。您可以在终端中非常容易地手动关闭它。
我遇到过几次这种情况,我相信这与没有正确关闭MAMP有关。
  1. 退出MAMP。
  2. 打开终端并键入:killall -9 mysqld
  3. 重新启动MAMP。

谢谢回复!抱歉没能及时回复,因为我没有收到关于这个的评论通知。我试了一下,在终端打出指令后出现了“未找到属于您的任何匹配进程”的提示。这是在我直接进入我的应用程序>实用工具>终端程序来输入指令的情况下。有什么建议吗? - kia4567

0
另一个 MySQL/MariaDB 副本正在运行吗? ibdata1 存储在某个奇怪的文件系统分区上吗?

我不确定如何检查是否有另一个副本正在运行? - kia4567

0

你是否恰好从正在运行的实例备份中还原了数据?

以下内容摘自https://dev.mysql.com/doc/refman/5.7/en/backup-types.html

物理备份方法具有以下特点: • 可在 MySQL 服务器未运行时执行备份。如果服务器正在运行,则需要执行适当的锁定,以使服务器在备份期间不更改数据库内容。MySQL Enterprise Backup会自动为需要锁定的表执行此操作。


谢谢回复!很抱歉我没有早点回复,因为我没有意识到有评论,也没有收到通知。我根本没有从备份中恢复。有一天它还能用,几周后就不能用了。我不知道期间发生了什么。 - kia4567

0
  1. 退出MAMP
  2. 前往/Applications/MAMP/tmp/mysql/并添加文件
  3. 重新启动MAMP。就这样!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接