[MySQL]1932 Table doesn't exist in engine エラーの解決方法

Read More


最近MySQLに大量データをインポートしたせいでMySQLがエラーを吐いて落ちるようになっていた。
そこでMySQLの再設定をあれこれした結果今度はMySQLがまともに起動しなくなった。

原因を探しつつ色々あれやこれやと試しているうちに何とかMySQLの起動状態を維持するようにはなった。
が、今度は特定のDBがエラーコード:1932 ”Table doesn't exist in engine” というエラーログを吐き始めるようになった…

エラーを吐いていたDBはphpmyadmin。

ブラウザからアクセスして操作をしてもエラーになるし、
MySQL Workbenchでテーブルを操作しようとしてもエラーが出る。

■MySQL 1932 エラーの解決編
★windows10のxampp環境★
★GitBashではなくコマンドプロンプトで記述★

まずコマンドプロンプトからmysqlにログインしてDB選択、各テーブルのエンジン状態を確認。
cd c:/xampp/mysql/bin
mysql -u root -p{pass}
show databases;
use phpmyadmin;
show table status;

※適当に読み替え

見ると、テーブルpma__bookmarkのEngineがnullになっていた。
そのほかのテーブルも同様の状態。
普通ならMyISAMとかInnoDBとか指定されているはずだよね…

テーブルを入れ直そうにもなぜかdrop databaseが効かなかった。


次に、データが格納してあるフォルダを消すこととした。
cd c:/xampp/mysql/data
dir
rmdir phpmyadmin /S
Y

これでpma_*.frmとかpma_*.ibdが丸っと消えた。


次にDBの再設定。
先ほどフォルダを消したのでDBを丸ごと作り直せるようになった。
cd c:/xampp/mysql/bin
mysql -u root -p{pass}
show databases;
drop database `phpmyadmin`;
create database `phpmyadmin`;
show databases;



次にテーブルの作成。
クリエイトテーブルのSQLが置いてあるパスは以下の通り。
c:/xampp/phpMyAdmin/sql/create_tables.sql


これをコピーしてコマンドプロンプト、あるいはMySQL Workbenchからphpmyadminを選択してデータを流し込む。


最後にテーブルのEngineが入っているか確認。
…全てInnoDBが設定されていた。




--
文章にするとものの10分だが実際ここまでたどり着くのに数時間を要した…
まーPHPMyAdminは使う機会もそうないんだけど。
エラーになったままってのが気にいらなかった。そんだけ。