2011-05-25 8 views
6

mysqldumpを使用してデータベースをエクスポートし、それを他のサーバのMySQLにインポートしました。私は "テーブルを表示"すれば今はすべてのテーブルを見ることができますが、実際にはテーブルを選択したり説明することはできません。InnoDBテーブルはMySQLに存在しますが、データベースを新しいサーバにコピーした後は存在しないと言います

ERROR 1146(42S02):テーブル 'mydatabase.userは私のテーブルはすべてのInnoDBある

存在しません。私は、old_passwordsを使っていた人がいたので、my.cnfに明示的に0に設定し、mysqlテーブルのすべてのパスワードが新しいパスワードのために41桁の16進数であることを確認しました。

+0

ていますか?単一のトランザクションでリストアしようとすると、トランザクションはエラーで停止します。 – Igor

+0

コピーしてからしばらく働いていて、テーブルが存在しないと言ってきたばかりです。しかし、テーブルが存在しないためにテーブルを作成できません... インポート後にこのコピーで発生したデータにはいくつかの変更があったため、少なくともそれらにアクセスできる必要があります。この表の.frmファイルは、データベースの作業コピーとまったく同じです。 – mrgordon

+0

テーブル構造に問題があるようです。あなたを助けることはできません。ログを有効にして新鮮なリストアを試し、ログからエラーがあればここに投稿してください。 – Igor

答えて

7

理由は「show tables;」です。 mysqldが.frmファイルのデータベースディレクトリだけをスキャンするためです。それらが存在する限り、テーブル定義が表示されます。

はMySQLにデータをインポートし、このエラーメッセージが発生した場合、私はすぐにどうなる最初のものは、このコマンドを実行します(ちなみにこれは、MySQL 5.1.45ですが、とにかくMySQLの5.xの中で動作します)

mysql> show engines; 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| Engine  | Support | Comment              | Transactions | XA | Savepoints | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| InnoDB  | YES  | Supports transactions, row-level locking, and foreign keys  | YES   | YES | YES  | 
| MRG_MYISAM | YES  | Collection of identical MyISAM tables       | NO   | NO | NO   | 
| BLACKHOLE | YES  | /dev/null storage engine (anything you write to it disappears) | NO   | NO | NO   | 
| CSV  | YES  | CSV storage engine            | NO   | NO | NO   | 
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables  | NO   | NO | NO   | 
| FEDERATED | NO  | Federated MySQL storage engine         | NULL   | NULL | NULL  | 
| ARCHIVE | YES  | Archive storage engine           | NO   | NO | NO   | 
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance   | NO   | NO | NO   | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
8 rows in set (0.00 sec) 

InnoDBにデータをインポートしたサーバーが無効になっている場合は、大きな問題があります。ここではあなたが何をすべきかです:

1)新しいインポートDBサーバ

2)Cleanup InnoDB Setup

3)実行SHOWエンジンからのすべてのデータをドロップ。 InnoDBが完全に稼動していることを確認してください!

4)

はそれを試してみる新しいインポートサーバーへのmysqldumpをリロードします!

2

WindowsサーバーからLinuxサーバーに変更したときにこの問題が発生しました。 テーブルはファイルで、Windowsファイルは大文字小文字を区別しませんが、Linuxファイルでは大文字と小文字が区別されます。

私のアプリケーションでは、SQLクエリでは、大文字のテーブル名やその他の小文字を使用することがありましたので、時々私はあなたと同じ結果を得ました。

0

私の場合、それはSQLCA.DBParmパラメータでした。

は私が SQLCA.DBParm = "Databse = "sle_database.text""使用されるが、それは

SQLCA.DBParm = "Database='" +sle_database.text+ "'" 

は説明しなければなりません:あなたは、3つの文字列を結合しようとしている:あなたがエラーなしで作られた復元することを確認してください

a) Database='    - "Database='" 

b) (name of the database) - +sle_database.text+ 

c) ' - "'"