web-dev-qa-db-ja.com

MySQLデータベースを回復する方法:ファイル内の誤った情報: './ xxx.frm'

共有ウェブホストのサーバー上にある非常に重要なデータベースが破損していて、バックアップしませんでした。この表には、非常に重要な電子メールアドレスの大きなリストが含まれています。テーブルリストを取得できますが、NavicatまたはphpMyAdminでテーブルを開くと、次のエラーが発生します。

ファイル内の情報が正しくありません: './ the-table-name.frm'

データベースに関連付けられている.frmファイルをWebホストから取得することができました。

そこには他のデータもありますが、少なくともメールアドレスを取得できれば大丈夫です。

このデータベースを回復するにはどうすればよいですか?私はこれを修正するために誰かにお金を払っても構わないと思っています。

9
Paul Go

これはserverfaultに属します。

まず、.FRMファイルには「データ」がnone含まれています。それらは単にテーブルの定義です。

allの場合、次のいずれかが当てはまります。

  • テーブルはMyISAMストレージエンジンを使用しています
  • テーブルを再作成するために必要なCREATE TABLEステートメントを知っています

次に、次の手順を実行します。

  1. MySQLを停止します
  2. Table_name.frm、table_name.MYI、table_name.MYDファイルをバックアップします
  3. それらをmysqlデータディレクトリから削除します(通常は/ var/lib/mysql)
  4. MySQLを起動します
  5. テーブルを再度作成します
  6. MySQLを停止します
  7. .MYDファイルと.MYIファイルをdatadirにコピーして戻し、そこにあるファイルを置き換えます。
  8. MySQLを起動します
  9. ???
  10. 利益
16
hobodave

次のコマンドを試すことができます。CHECKTABLEtablename

これで「破損した」メッセージが表示される場合は、次を試してください。

REPAIRTABLEテーブル名

実際、これらは私の同様の問題を解決しませんでしたが、誰かに役立つかもしれません。

0
jsonx

同様の問題が発生しましたが、MySQL InnoDBエンジンがオフになっていることがわかりました(phpMyAdminを介して確認できました。bashプロが他の方法でそれを行う方法を教えてくれます)。私の場合、MySQLを再起動するのと同じくらい簡単でしたが、そこで何かが変更された場合は、構成を確認することをお勧めします。

0
Addo Solutions