SUNDAY WEB

トラブル解決と覚書

Windows関連


XAMPPのMySQLが壊れたけど、修復した



参考にしたサイト
「xamppのMySQLがshutdownエラーで起動できない、タスクキルでもport変えても直らないのをようやく解決できた話。 - 傘はあまり差したくない人」
https://y-a-d.hatenablog.jp/entry/2020/01/28/183000

「MariaDB(MySQL)「#1034 - 表 'db' の索引ファイル(key file)の内容が不正です。修復を試行してください。」 への対処方法 - Qiita」
https://qiita.com/JPig/items/a35cf4fb588ec930dd5d


以下、覚書です。
行き当たりばったりで、手順がグダグダになったので他の方には役に立たないと思いますが、自分用の手順メモです。

トラブル
XAMPPのMySQLが起動しなくなった

リベンジ
半年前にMySQLが壊れたときは諦めてXAMPPの再インストールをした。最初からやり直しは大変だったので、今回は修復した。

よくわからない
実は原因も、解決方法もよくわからない。
エラーログを頼りにネット情報を探した。有用な情報は見つかったが、活かしきれなかった。いろいろ試すうちグダグダになった。変更したファイルを元に戻したら(戻し方もグダグダになった)MySQLが壊れた状態で起動した。壊れた箇所はphpMyAdminで修復した。

行ったこと(覚書)
1.ポート番号変更(変化なし)
2.innodb_buffer_pool_sizeなどサイズ変更(変化なし)
3.dataフォルダ内のフォルダに入ってないファイルをまとめて「新しいフォルダ」にブチ込んでみる(startするとファイルが再作成されるが起動は失敗)
4.dataフォルダをコピー(「data - コピー」に退避)して、data以下を全削除(自分の作成したDBのフォルダのみ残す)、backupフォルダの中身(mysqlほか下の画像)をdataにコピペし、「data - コピー」からibdata1をdataにコピペしてstart(変化なし)

5.「data - コピー」をdataにせず、dataに「data - コピー」のファイルを何か覚えてないが適当に放り込んだ。(なぜかMySQL起動、そして次の不具合へ)
以下、ログに記録される
------
[ERROR] mysqld.exe: Table '.\mysql\db' is marked as crashed and last (automatic?) repair failed
[ERROR] Fatal error: Can't open and lock privilege tables: Table '.\mysql\db' is marked as crashed and last (automatic?) repair failed
[ERROR] Aborting
[Warning] InnoDB: Retry attempts for reading partial data failed.
[ERROR] InnoDB: Tried to read 16384 bytes at offset 0, but was only able to read 0
[ERROR] InnoDB: Operating system error number 203 in a file operation.
[ERROR] InnoDB: File (unknown): 'read' returned OS error 403. Cannot continue operation
[ERROR] mysqld got exception 0x80000003 ;
This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware.

To report this bug, see
https://mariadb.com/kb/en/reporting-bugs
------

次の不具合
「対象のコンピューターによって拒否されたため、接続できませんでした」他、phpMyAdminにログインできないし、phpからMySQLへの接続もできない

行ったこと(覚書)
1.my.iniやphpMyAdminのconfig.inc.phpをいろいろ変更。
(rootパスワードは不明、おそらく未設定)
my.iniのpasswordをデタラメに指定したタイミングで挙動が変わった(コマンドプロンプトからmysqlを叩いたときのエラーメッセージが変わった)しかし、それが原因で変わったとは思えない。(なぜなら、設定を元に戻しても挙動は元に戻らなかったから。では、何きっかけで改善したかというと、さっぱりわからない)

# password = your_password
↓関係ない文字を指定してみた
password = "abcd"

ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)

ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: NO)

(状態が変化した)DBに接続できないが、phpMyAdminにログインできるようになった
メモ1.phpMyAdminに、以下のメッセージが表示されて動かない。
「#1034 - 表 'db' の索引ファイル(key file)の内容が不正です。修復を試行してください。」
メモ2.my.iniとconfig.inc.phpを変更前に戻しても、ログインはできるし、メッセージも変わらない。謎。

半歩前進、次の不具合へ

次の不具合
「#1034 - 表 'db' の索引ファイル(key file)の内容が不正です。修復を試行してください。」

行ったこと(覚書)
1.mysqlのDB内の、dbのテーブルを選択して、[テーブルを修復する」を実行。

2.ユーザーアカウントが消えた?消した?

3.phpMyAdminでユーザ作成し直したけど、「#1034 - 表 'db' の索引ファイル(key file)の内容が不正です。修復を試行してください。」は変わらず、MySQL使えない状態。

4.mysql停止して、dataフォルダからmysqlを削除、backupフォルダからdataフォルダへmysqlをコピペ、mysql起動。

5.権限の再読み込みをクリック。「注意: phpMyAdmin は MySQL の権限テーブルから直接ユーザ権限を取得しますが、手作業で権限を更新した場合は phpMyAdmin が利用しているテーブルの内容とサーバ権限の内容が一致しなくなることがありますので、作業を続ける前に 権限の再読み込み をしてください。」

6.phpMyAdminでユーザ作成し直しで、MySQL修復完了。

以上です。
結果オーライです。XAMPPのMySQLが壊れても再インストールしないで修復するというリベンジは果たされました。

XAMPPのMySQLが壊れたけど、修復した