2011-10-13 18 views
5

私は、mysqldumpをファイルからすべてのデータベースを復元していますと、次のエラーを取得しています:ERROR 1005(HY000)ライン156で:テーブルを作成できません 'db1.testtable'(errnoに:121)

ERROR 1005 (HY000) at line 156: Can't create table 'db1.testtable' (errno: 121) 

私のSQLはmysqldumpユーティリティから作成されているので、SQLコードにエラーがどのように現れたのか混乱しています!私のdump.sqlで

関連する行は、次のとおりです。

CREATE TABLE `testtable` (
    `username` varchar(255) NOT NULL, 
    `password` varchar(255) NOT NULL, 
    `emailaddress` varchar(255) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

おかげで、ジム・

答えて

8

にerrno 121が重複キーエラーを意味します。テーブルの.frmファイルは削除されていますが、テーブルはすでにInnoDB内部データ辞書に存在している可能性があります。これは、テーブル作成時にerrno 121を取得する最も一般的な理由です。別の考えられる理由は、外部キー制約名に名前の競合があることです。制約名は、表名のようにデータベース内で一意でなければなりません。

InnoDBは.errログで何を出力しますか?

+1

111013 9:30:47 InnoDB:エラー:テーブル 'db1'.'testtable'が既にInnoDB内部に存在しています InnoDB:データ辞書。 .frmファイルを削除しました InnoDB:DROP TABLEを使用していませんか? DROP DATABASE InnoDB:MySQLバージョン<= 3.23.43のInnoDBテーブルのために使用しましたか? InnoDB:InnoDBマニュアルの制限事項を参照してください。 InnoDB:InnoDB内で孤立したテーブルを削除することができます。 InnoDB:別のディレクトリに同じ名前のInnoDBテーブルを作成します。 InnoDB:データベースと.frmファイルを現在のデータベースにコピーします。 InnoDB:MySQLはテーブルが存在していると判断し、DROP TABLEは InnoDB:成功します。 –

+0

@ user993052私はその指示がかなり明確だと思います! :-) – ManseUK

+0

** bold **エラー:テーブルdb1.testtableがInnoDB内部のInnoDB:data辞書にすでに存在しています。** bold ** 私はibdata1、ib_logfile0、ib_logfile1ファイルについて話していると仮定していますか?それらを削除し、最初からdump.sqlからロードを開始しようとします。 –

関連する問題