web-dev-qa-db-ja.com

XAMPP / MySQL:MySQLの再起動後、単一テーブルのテーブルスペースファイル。\ mysql \ innodb_index_stats.ibdを開けませんでした

私はローカルXAMPPサーバーにDrupalをインストールしました。XAMPPを再起動するまで、データベース/サイトを含めて操作することで問題はありませんでした。それ以来、ログファイルで次のようになっています。 :

2013-09-02 16:18:46 2544 [注]プラグイン 'FEDERATED'が無効になっています。

2013-09-02 16:18:46 3e8 InnoDB:警告:innodb_additional_mem_pool_sizeの使用は非推奨です。このオプションは、innodb_use_sys_mallocオプションおよびInnoDBの内部メモリアロケータとともに、将来のリリースで削除される可能性があります。

2013-09-02 16:18:46 2544 [注] InnoDB:InnoDBメモリヒープが無効になっています

2013-09-02 16:18:46 2544 [注] InnoDB:ミューテックスとrw_locksはWindowsインターロック関数を使用します

2013-09-02 16:18:46 2544 [注] InnoDB:圧縮テーブルはzlib 1.2.3を使用します

2013-09-02 16:18:46 2544 [注] InnoDB:CPU crc32命令を使用しない

2013-09-02 16:18:46 2544 [注] InnoDB:バッファプールを初期化しています、サイズ= 16.0M

2013-09-02 16:18:46 2544 [注] InnoDB:バッファプールの初期化が完了しました

2013-09-02 16:18:46 2544 [注] InnoDB:サポートされている最高のファイル形式はバラクーダです。

2013-09-02 16:18:47 2544 [注] InnoDB:ibdataファイルのログシーケンス番号1600614および1600614は、ib_logfilesのログシーケンス番号1600644と一致しません。

2013-09-02 16:18:47 2544 [注] InnoDB:データベースは正常にシャットダウンされませんでした!

2013-09-02 16:18:47 2544 [注] InnoDB:クラッシュリカバリを開始しています。

2013-09-02 16:18:47 2544 [注] InnoDB:.ibdファイルからテーブルスペース情報を読み込んでいます...

2013-09-02 16:18:47 2544 [エラー] InnoDB:以前に開いたテーブルスペースを開こうとしました。以前のテーブルスペースdrupal/variableは、ファイルパス:。\ drupal\variable.ibdでスペースID:2を使用します。ファイルパス。\ mysql\innodb_index_stats.ibdでスペースID:2を使用するテーブルスペースmysql/innodb_index_statsを開けません

InnoDB:エラー:単一テーブルのテーブルスペースファイル。\ mysql\innodb_index_stats.ibdを開けませんでした

InnoDB:テーブルが次のようになる可能性があるため、クラッシュリカバリを続行しません

InnoDB:InnoDBログのログレコードを適用できない場合は破損しています。

InnoDB:問題を修正してmysqldを起動するには:

InnoDB:1)ファイルに権限の問題があり、mysqldが

InnoDB:ファイルを開き、権限を変更する必要があります。

InnoDB:2)テーブルが不要な場合、またはバックアップから復元できる場合、

InnoDB:.ibdファイルを削除すると、InnoDBは通常どおり実行します

InnoDB:クラッシュリカバリし、そのテーブルを無視します。

InnoDB:3)ファイルシステムまたはディスクが壊れており、削除できない場合

InnoDB:.ibdファイル。my.cnfでinnodb_force_recovery> 0を設定できます。

InnoDB:InnoDBに強制的にクラッシュリカバリを続行させます。

私はグーグル経由で解決策を探しましたが、データベースを削除するとMySQLに接続できるため、drupalデータベースだけで問題が発生しているようです。

誰かが私を助けてくれることを願っています:(。

15
leiseliesel

dev_khan、innodb_force_recoveryオプションを有効にしてMySQLを読み取り専用モードで再起動してみてください:

  1. My.cnfを編集します-次の行を見つけます:# innodb_force_recovery = 2
  2. 行をコメント化します(#を削除します)
  3. MySQLエンジンを再起動するためにMySQLを再起動します。
  4. innodb_force_recovery行をもう一度コメントします(#を追加)
  5. MySQLを再起動すると、読み取り専用制限なしで再びフルアクセスできます。

ドイツからのご挨拶

13
Janis Benda

これらのファイルを別のフォルダーに移動します(削除しないでください)。

innodb_index_stats.frm
innodb_table_stats.frm
slave_master_info.frm
slave_relay_log_info.frm
slave_worker_info.frm

および同じファイル名の.ibdファイル:

innodb_index_stats.ibd
innodb_table_stats.ibd
slave_master_info.ibd
slave_relay_log_info.ibd
slave_worker_info.ibd

MySQLを起動してみてください。

34

この問題は、mysql設定ファイルにmy.cnfまたはmy.iniの行を追加することで解決できます(ディストリビューションによって異なります)。

[mysqld]のすぐ下に次の行を追加します。innodb_force_recovery = 1

..
[mysqld]
innodb_force_recovery = 1 
..

次に、MySql Serverを再起動します。一部のデータが失われた可能性がありますが、データを使用してサーバーが再び機能するようになります。

よろしく、

20
Charles P.