web-dev-qa-db-ja.com

あるVPSから別のVPSにテーブルを移動した後、「テーブルがエンジンに存在しません」

現在、2つのVPSを実行しています。私が「古い」サーバーと呼ぶ1つはDebian 7で実行され、_mysql --version_に対してこの出力を提供します。

mysql Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (x86_64) using readline 6.2

もう1つは「新しい」サーバーと呼び、Debian 8の新しいインストールで実行されており、次の出力が得られます。

mysql Ver 15.1 Distrib 10.0.20-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

データベースとテーブルを古いサーバーから新しいサーバーに移動しようとしています。古いサーバーから_/var/lib/mysql/_ディレクトリをコピーし、新しいサーバーの同じディレクトリを上書きするだけでこれができると思いました。ただし、これを行った後、テーブルまたはデータベースのいずれかをクリックすると、新しいサーバーのphpMyAdminでこのエラーが表示されます。

_#1932 - Table 'phpmyadmin.pma__tracking' doesn't exist in engine_

しかし、私はそれが存在することをはっきりと見ることができます:

enter image description here

これに対する解決策はありますか?何を間違えたかわかりません。よろしくお願いします!

4
Mitch Talmadge

私はこの回答に従うことで問題を解決しました: https://stackoverflow.com/a/11506495/2364405

これらの変更を除いて:

  • 手順5でcreate_tables.sqlは見つかりませんでしたが、代わりにcreate_tables.sql.gzが見つかりました。 WinSCPを使用してこのファイルをダウンロードし、phpMyAdminにインポートしました(これにより、手順6と7が処理されます)。
  • ステップ8では、ユーザー名とパスワードのみを変更しました。テーブルには2つのアンダースコア(pma__bookmarkなど)があるので、1つのアンダースコアに変更しませんでした。

どういうわけか、これによりエラーなしでphpMyAdminを再び使用できるようになりました。 :)

0
Mitch Talmadge

サーバー間でファイルをコピーして、データベースを移動できます。これを行うには、DBの両方のインスタンスが停止していることを確認する必要があります。 rsyncを使用してデータベースファイルをコピーすることもお勧めします。ファイルを移動する前に両方のデータベースサーバーが停止していることを確認することに加えて、ほとんどの場合、ファイルの所有権を変更する必要があります。 Sudo chown --recursive mysql:mysql /var/lib/mysql新しいインスタンスを開始する前。

データベースを移動するために使用できる他のオプションがあります。データベースがそれほど大きくない場合、mysqldumpがおそらく最も単純です。 MariaDBを使用しているので、MariaDBから提供された以下のmysqldumpのドキュメントを添付しました。

https://mariadb.com/kb/en/mariadb/mysqldump/

考慮すべきもう1つのオプションは、サイズは少し複雑ですが少し柔軟ですが、Perconaのxtrabackupになります。

https://www.percona.com/software/mysql-database/percona-xtrabackup

4
Nathan

DBをあるフォルダーから別のフォルダーに移動しているだけで、InnoDBテーブルが見つからないために機能しなくなり、「エンジンにテーブルが存在しません」というエラーメッセージが表示された場合、これらのSQLのペアステートメントはすぐに役立ちます。

ALTER TABLE __yourtable_name__ DISCARD TABLESPACE ;

ALTER TABLE __yourtable_name__ IMPORT TABLESPACE ;

実際には、.IDBファイルは.FRMファイルからデタッチされ、再度バインドされるため、テーブルの内容は読み取り可能になります。

私の場合はうまくいきました。あなたも願っています。

1
Sandro Rosa

Mysqldumpバックアップを新しいマシンに移動した後も同じエラーが発生し、データベースで更新を行ったところ、外部制約のキーを持つ一意のインデックスが削除されました。

show engine innodb statusを使用して、外部キーエラーであることに気付きました。

------------------------
LATEST FOREIGN KEY ERROR
------------------------
2019-07-23 10:43:05 0x7f68a4255700 Error in foreign key constraint of table lhprovedorinfo/NOTAFISCAL:
there is no index in the table which would contain
the columns as the first columns, or the data types in the
table do not match the ones in the referenced table
or one of the ON ... SET NULL columns is declared NOT NULL. Constraint:

その後、次のコマンドを使用して外部キーチェックを無効にしました。set FOREIGN_KEY_CHECKS = 0;次に、mysqlが必要なインデックスを作成するために、外部キーを削除して再作成しました。そして私のテーブルは生き返った。

それが誰かを助けることを願っています。

0
Leandro Costa