序文: これは悪いことのように聞こえますが、行動する前にこの回答のすべてを必ず読んでください。時間をかけて事態を悪化させることはできません。各ステップを読んでください。これで、MAMPProのMySQLデータベースサーバーをフォローして再度実行できるようになることを願っています。
したがって、InnoDBデータベースがクラッシュしたようです。アプリ自体ではありません。キーはログにあります:
140527 15:06:58 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 791075520
140527 15:06:58 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 791076717
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 8402.
InnoDB: You may have to recover from a backup.
ここでMAMPPROを使用しているようです:
/Library/Application Support/appsolute/MAMP PRO/db/mysql
問題は、MAMP Proデータベースのバックアップがありますか? mysqldump
経由のいずれか または、他の何か? MAMPインストールに他のInnoDBデータベースがありますか?
また、mysqldump
を実行できたと言います 、しかし、データベースがクラッシュする可能性は実際にはありません。したがって、mysqldump
を実行したときに想定しています これは、システムへのMySQLの別の個別インストールでした。 mysqldump
などのMySQLバイナリ MAMPまたはMAMPProは、システム全体のmysqldump
と同じではありません。 。それらは2つの100%異なるインストールです。どのmysqldump
を確認できます 次のコマンドを入力して使用されています:
which mysqldump
使用していると思われるものの完全なパスを確認する。 mysqldump
のMAMPインストール —およびその他の関連するバイナリ—はここにあります:
/Applications/MAMP/Library/bin/
また、$PATH
を変更せずに直接実行するには 値(他のすべて)は、次のように実行することです:
/Applications/MAMP/Library/bin/mysqldump
注意深くお読みください: 以下に私があなたに与えるアドバイスは、私がこのような状況に対処するあらゆる方法を提示することであることに注意してください。 InnoDBデータベースが重要でない場合は、InnoDB固有のDBファイルを破棄するという最初の提案を行ってください。 mysqldump
がある場合 バックアップ、同じことを行いますが、mysqldump
を回復します バックアップ。
また、InnoDBはではありません デフォルトのストレージエンジン。あなたはそれを設定するためにあなたの邪魔にならないようにしなければなりません。デフォルトはMyISAMです。 MySQLで作成された新しいDBはすべてMyISAMになります。だからこれはあなたを助けるでしょう。どのデータベースにInnoDBストレージエンジンが設定されているかを把握するために、思考の上限を設定する必要があります。あなたが25を持っているが、1つだけがInnoDBを持っていると言うなら、簡単な解決策です。ただし、データベースが25個ある場合は、通常のmysqldump
を作成する習慣を身に付ける必要があります。 バックアップ。バックアップがある場合、これは頭痛の種になりますが、解決するのは簡単です。
1つのオプション:破損したInnoDBのものを削除し、mysqldump
から回復します バックアップ。
私があなただったら最初にすることはmysql
をバックアップすることです /Library/Application Support/appsolute/MAMP PRO/db/
のディレクトリ そのため、万が一の場合に備えて、少なくとも破損したファイルのバックアップをとることができます。
次に、次のファイルを削除します:
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile0
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile1
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ibdata1
これらはInnoDB固有のファイルです。それらを削除してから、MAMPの起動を再試行してください。出てくるはずです。ただし、MAMP内のInnoDBデータベースはすべて「ゾンビ」状態になります。これらのデータベースを削除して、バックアップから再作成する必要があります。または、可能であれば最初から。
別のオプション:innodb_force_recovery
を使用して、MySQLサーバーを再度起動して実行してみてください 。
今、そのDBを回復する必要があるオフハンドのチャンスで、 innodb_force_recovery
ここで説明されているように。
MAMP Proの場合、次の手順に従ってMySQL構成ファイルを編集できるようです。
- MAMPProを起動します。
- MAMPProサーバーが実行されている場合は停止します。
- [ファイルの選択]->[テンプレートの編集]->[MySQLmy.cnf]
- エディタウィンドウが表示されます。
- 警告メッセージが表示された場合は、[OK]をクリックして確認してください。
- セクション「[mysqld]」を検索
- このセクションの最後の行の下に、次の行を追加します:
innodb_force_recovery = 1
そして、MySQLのドキュメントで説明されているように
、これは厳密にデータベースを稼働させるためのものであり、mysqldump
を介してバックアップを作成できます。 :
現在、innodb_force_recovery
には約6つの異なる値があります ただし、実際には1
でのみ試行する必要があります 今のところ。 6つそれぞれを試してみたい場合は、次の内訳をご覧ください。
データベースを起動して実行し、mysqldump
を実行できる場合 それではおめでとうございます!あなたは明確です!次の最善のステップは次のとおりです
- MySQLデータベースサーバーを停止します
-
innodb_force_recovery
を削除します データベースサーバーが正常に動作できるように、MySQL構成のオプション。 - MySQLデータベースサーバーを再起動します。
- 破損したMySQLデータベースをサーバーから削除します(ダンプファイルを削除しないでください!これがバックアップです!)
- 回復する新しいデータベースを作成します。
-
mysqldump
をインポートします 新しいデータベースにバックアップします。
そして、あなたはやるべきです。