傘はあまり差したくない人

思ったことを書きたいだけの場所

xamppのMySQLがshutdownエラーで起動できない、タスクキルでもport変えても直らないのをようやく解決できた話。

色んなサイトを見てもどうすることもできず、再インストールするしかなかったあの頃に終止符。

 

 

MySQLが同じようなエラーで起動できなくなって、多くのサイトで書かれている以下のようなことも試したけどダメだった人向け。以下を試してない人は試してからどうぞ。

私の場合は矢印以下の状況だったのでどれも無駄でした。

 

・他で起動しているMySQLのタスクをキルする

 →そもそも他のMySQLが起動していない

・port番号を変える

 →そもそもそのportを他が使っていないから無意味

・PC再起動

 →無意味

・管理者権限で起動

 →無味無臭

 

上記で解決できた人は大丈夫です。

 

xamppでMySQLが起動しない

MySQLをスタートさせようとするとすぐSTOPになり、以下のような文が吐き出される。

 

Error: MySQL shutdown unexpectedly.
This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method.
Press the Logs button to view error logs and check the Windows Event Viewer for more clues If you need more help, copy and post this entire log window on the forums

 

前回xamppを終了させるときに適切な手順を踏まなかったっぽい。ひえ~。

 

エラーログはこんな感じ。ほんの少ししか抜き出してないけど。

 

2020-01-24 19:30:00 13456 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.36-82.2 started; log sequence number 1835047
2020-01-24 19:30:00 16984 [Note] InnoDB: Dumping buffer pool(s) not yet started
2020-01-24 19:30:00 13456 [Note] Plugin 'FEEDBACK' is disabled.
2020-01-24 19:30:00 13456 [Note] Server socket created on IP: '::'.

何を言っているのかさっぱりわからないのでコピって検索。

数カ月かけてようやく解決。再インストールするしかなかったのですが、これでOKです。

 

dataフォルダを丸っと退避

まずxamppフォルダ内にある「mysql\data」をまるまるっとどこかに退避。

 

dataフォルダ内の自分のDB以外削除

退避をさせたら、同じく「mysql\data」の中にある自分が作ったデータベース以外のフォルダとファイルを削除。怖いけどバックアップあるので思い切り削除。

 

削除対象のフォルダは以下

mysql

・performance_schema

phpmyadmin

・test

 

ファイルも消してね。

 

backupフォルダの中身を丸っとdataにコピー

mysql\backup」内のファルダやファイルをコピーして、「mysql\data」にペースト。

 

ここまで終わったらxamppを再起動。そしてMySQL起動。

 

恐らく起動に成功するはず!!!!しなかったらスイマセンお手上げです。

でもまだ操作はしない方がいいです!詳しくは次!

 

テーブルの中身を見れない

起動はしてもこれで終わりではない。DBにもアクセスできるが、多分元々あったテーブルにはアクセスできないと思う。

 

SELECT文流すと以下が出るはず。

 

#1932 - Table 'DB.TABLE' doesn't exist in engine

 

SHOW TABLESで見るとテーブルがあるのに、こう言われる。

そしたらまたMySQLはSTOPさせる。

 

退避させたdataからibdata1をコピってくる

最初に退避させたdataフォルダからibdata1という名前のファイルをコピー。

そして「mysql\data」にペースト。上書きしちゃう。

 

このibdata1ってファイル、ざっくりいうとこれまでのデータベースの情報が入っているみたい。だからbackupから取ってきたibdata1ファイルだと、今まで作ってきたテーブルとかの情報がないから存在しないよというエラーが出るんだと思う。

 

ので、起動できたからと安心して新しくDB作ったりすると元々あったDBを復元するのは困難を極めると思うので注意。

 

これでDBの復元もできてる!はず!!!

確認どうぞ!

 

これで復元できなかったら諦めて他の情報当たるか新しいDB作ってくらさい。

 

そもそもshutdownエラーを出さないためには

ちゃんとコントロールパネルで、MySQLのスタート&ストップを行うこと。

えいってパネル閉じたり、「Quit」を押すのは違うっぽい。

いつも私はえいってコントロールパネルを閉じてるんだけど、このエラー起きたことない。謎。自分の環境で再現できないエラーの解決すんのめんどくさすぎぃ!

 

 

 

portがどうとかタスクキルがどうとかっていう情報はたくさん出てきたんだけど、ここまでの解決手段はなかなかネット上で見つからなかったため(途中までとかならわりとあった)、今後の為に記録。こんなブログ誰が見るのかわからないけど。

 

英語のサイトだとけっこう似たような情報が書いてあったっぽい。ので、英語ができる人はすぐ解決できていそう。ひぃ~ひぃ~言いながら翻訳に頼りながら読みました、ぎえー。

 

 

私みたいな技術者でもなんでもない者がこういうものを書くのはおこがましいなと思いつつも、ネットの海で(恐らく)ただ一人書いてくれていた情報に救われたこともあるので……。

書くのって大事。

 

 

2022年4月28日追記

たくさんのコメントありがとうございます。未だにこの情報が役に立っているようでうれしいです。

かなり読みづらい内容だったので少し修正入れました。

また誰か困っている人の目に留まりますことを願います。