Plesk12で「SQLSTATE[42S02]: Base table~~」エラー時の対応方法
2024/02/20
Plesk12のログインページを開くと「ERROR: Zend_Db_Statement_Exception: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'psa.sessions' doesn't exist (Pdo.php:234)」と表示されログインできなかった。対応方法のメモ。
エラーログを確認する
/var/log/mysqld.logにあるMySQLのログを確認したところ以下エラーが出力されていた。
[ERROR] Cannot find or open table psa/sessions from the internal data dictionary of InnoDB though the .frm file for the table exists. Maybe you have deleted and recreated InnoDB data files but have forgotten to delete the corresponding .frm files of InnoDB tables, or you have moved .frm files to another database? or, the table contains indexes that this version of the engine doesn't support. See http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.html how you can resolve the problem.
Google翻訳にかけると以下になる。
[ERROR]テーブルpsa / sessionsが見つかりません。
InnoDBの内部データディクショナリは.frmファイルですが、
テーブルが存在する。おそらくあなたはInnoDBデータを削除して再作成したでしょう
対応する.frmファイルを削除するのを忘れてしまった
InnoDBテーブルの.frmファイルを別のデータベースに移動しましたか?
テーブルには、このバージョンのエンジンのインデックスが含まれています
サポートしていません。
http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.htmlを参照してください。
どのように問題を解決できるか。
psaデータベースのsessionsテーブル? とかいうのが見つからないっぽい。尚、psaデータベースとはPlesk自体の管理用データベースらしい。
バックアップを探す
Pleskデータベースは自動で/var/lib/psa/dumps/ディレクトリにバックアップされる。mysql.daily.dump.*.gz(*部分は数字)のファイルがバックアップファイルになる。最新のものをローカルに落として中身を見たところpsaデータベースのdumpファイルだった。
psaデータベースの確認
以下で確認する。
#SSHでMySQLにログイン mysql -uadmin -p`cat /etc/psa/.psa.shadow` #psaテーブルの確認 mysql> show databases like 'psa'; #以下の場合だとデータベースごと破損(ケース1) Empty set (0.00 sec) #以下の場合だとデータベースはあるが中身が破損(ケース2) +----------------+ | Database (psa) | +----------------+ | psa | +----------------+ 1 row in set (0.00 sec)
ちなみに今回はケース2の方だった。
ケース1の場合
#バックアップファイルの解凍(ローカルのものをアップロードしてもよい) gunzip /var/lib/psa/dumps/mysql.daily.dump.0.gz #インポートする mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa < /var/lib/psa/dumps/mysql.daily.dump.0
ケース2の場合
dumpファイルの中にcreate database psaの記述が上部にあるのでコメントアウトか削除した上でサーバにアップする。
#SSHでMySQLにログイン mysql -uadmin -p`cat /etc/psa/.psa.shadow` #インポートする source /hoge/hogehoge/psa.dump;
原因
直近でMySQLのストレージエンジンをMyISAMからInnoDBに変更した。その際に/var/lib/mysqlディレクトリにあるib_logfile0、ib_logfile1、ibdata1のファイルは他所に移した。するとinformation_schema以外で通常時に使っているデータベース(psa以外)がテーブル名は表示されるものの、テーブル内のデータは見られなくなった。ここが原因だと思われる。
通常時に使っているデータベースはバックアップを取っていたのですぐにインポートしたが、psaデータベースは認知していなかったので焦った。
その他
以前にCentOSのバージョンを上げてOpenSSHか何かを更新した際に、今回とはまた違うエラーだったとは思うがPleskにログインできなくなった。Pleskの管理画面上以外(SSH接続とか)からサーバ設定を変更するとリスクを伴うので注意する。
参考サイト
関連記事
-
-
無料レンタルサーバ「シン・クラウド for Free」の使用した感想
無料のレンタルサーバと聞くと広告ありで機能制限が多いようなイメージを思い浮かべる ...
-
-
phpMyAdminにて指定したIPアドレスからのアクセスを制限する方法
phpMyAdminにて指定したIPアドレスからのアクセスを制限する方法をメモ。 ...
-
-
VPSに無料SSLのLet's Encryptを導入
SSLといえば有料という認識だったが、無料のものも出てきているという話を聞いた。 ...
-
-
ムームードメインで取得したドメインをシン・クラウド for Freeに割り当てHTTPS接続する方法
ムームードメインで取得したドメインをシン・クラウド for Freeに割り当てた ...
-
-
yumでupdateが出来ずepelがどうのこうのエラーが出た
yumでupdate使用としたら「Error: Cannot retrieve ...