質問: ### 前提・実現したいこと 外部モニタのコネクタを抜いた際にMacbookproが突然強制終了し、強制終了される前に立ち上げていたMAMPがMySQLのみ起動しなくなってしまいました。 Apacheサーバーは起動しています。 MySQLを起動できるようにして、以前のようにMAMPでwordpressでの開発を行えるようにしたいです。 ### 発生している問題・エラーメッセージ ``` InnoDB: The error means the system cannot find the path specified. InnoDB: If you are installing InnoDB, remember that you must create InnoDB: directories yourself, InnoDB does not create them. InnoDB: Error: could not open single-table tablespace file ./mysql/innodb_index_stats.ibd InnoDB: We do not continue the crash recovery, because the table may become InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it. InnoDB: To fix the problem and start mysqld: InnoDB: 1) If there is a permission problem in the file and mysqld cannot InnoDB: open the file, you should modify the permissions. InnoDB: 2) If the table is not needed, or you can restore it from a backup, InnoDB: then you can remove the .ibd file, and InnoDB will do a normal InnoDB: crash recovery and ignore that table. InnoDB: 3) If the file system or the disk is broken, and you cannot remove InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf InnoDB: and force InnoDB to continue crash recovery here. 170124 10:13:18 mysqld_safe mysqld from pid file /Applications/MAMP/tmp/mysql/mysql.pid ended ``` ### 試したこと * `killall -9 mysqld` * 上記エラーを翻訳したのですが、具体的にどこのファイルをどうしたら良いのかわからず...。 ``` エラーは、システムが指定されたパスを見つけることができないことを意味します。 InnoDBをインストールする場合は、自分でディレクトリを作成する必要があることを覚えておいてください。 InnoDBはディレクトリを作成しません。 エラー:単一テーブル表スペース・ファイルをオープンできませんでした ./mysql/innodb_index_stats.ibd InnoDBログにログ・レコードを適用できないと、表が破損する可能性があるため、クラッシュ・リカバリーは継続しません。 問題を修正してmysqldを起動するには、次のようにします。 1)ファイルにアクセス権の問題があり、mysqldがファイルを開くことができない場合は、アクセス権を変更する必要があります。 2)テーブルが必要ない場合、またはバックアップから復元できる場合は.ibdファイルを削除することができ、 InnoDBは通常のクラッシュリカバリを行い、そのテーブルを無視します。 3)ファイルシステムやディスクが壊れていて、.ibdファイルを削除できない場合は、 my.cnfにinnodb_force_recovery> 0を設定してInnoDBに強制的にクラッシュリカバリを継続させることができます。 /Applications/MAMP/tmp/mysql/mysql.pidがpidファイルからmysqld_safe mysqldが終了しました。 ``` ### 補足情報(言語/FW/ツール等のバージョンなど) * MAMP * MySQLのバージョン: 5.6.33 * PHP 7.0.12 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/2d18a13b38dff47dfd8072711f840cdd.png)
回答: 強制終了してしまったことでファイルが壊れた可能性が高いです。 なのでメッセージの後半に書かれていますが、 > > InnoDB: 3) If the file system or the disk is broken, and you cannot remove > > InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf > > InnoDB: and force InnoDB to continue crash recovery here. > > > に該当するでしょうから、いったん ./mysql/innodb_index_stats.ibd を削除して、 my.cnf の innodb_force_recovery を 変更して、強制リカバリをやってみる、しかなさそうです。 ※要は以下のURLに書かれていることをやってみろ、ということです https://dev.mysql.com/doc/refman/5.6/ja/forcing-innodb-recovery.html いっそ、MAMP を再インストールした方がよいような気も。