2013-07-29 5 views
19

「IMPORT前に表領域を破棄してください」:のmysqldump問題:私は本番データベース(MySQLバージョン5.1.66)の日々のバックアップのmysqldumpバックアップを実行

mysqldump --user=username --password=secret -C -e --create-options --hex-blob --net_buffer_length=5000 databasename > file 

私もの日々を復元しますdatabasename 'テーブルの表領域:行25で ERROR 1813(HY000):私の開発マシン上のデータベース(MySQLバージョン5.6.12)

mysql --user=username --password=secret databasename < file 

私はエラーを取得します。 tablename 'が存在します。 IMPORTの前に表スペースを破棄してください。

私の読書は、MySQLのInnoDBデータベースは、コマンドを必要とするため、これがあることを示し:表がドロップされる前に

ALTER TABLE tbl_name DISCARD TABLESPACE; 

が実行される - テーブルをドロップすると、そのを取り除くのに十分ではないようですインデックス。 (私の開発サーバーはinnodb_file_per_tableオプションを使用しています)

私の開発データベースに本番データベースで削除されたデータが潜在的に存在する可能性があるため、私は 'replace'オプションを使用しません。

btwエラーが発生した後、テーブルは読み込みできませんが、mysqldを再起動するとそれが修正されます。

この問題を解決するのに役立つmysqlダンプオプションはありますか、エラーを防止するデータをインポートする別の方法がありますか?

あらかじめ読んでいただきありがとうございます。

答えて

38

あなたはtablename.ibdを持っていますが、tablename.frmはありません。

確認するには、データベース名MySQLのデータディレクトリへ

  1. CDを。
    cd /var/lib/mysql/database_name
  2. エラーが発生しているテーブル名を検索します。

    ls tablename.*

    次の2つのファイルが表示されるはずです

     
    tablename.ibd 
    tablename.frm 
    

    をしかし、私はあなたがいないとだけあなたはいくつかのオプションを持って解決するには

    tablename.ibd

参照推測している。

  1. 以下をmysqldumpに追加すると、d復元する前にデータディレクトリをクリーンアップします。
    --add-drop-database
  2. devdにprodからtablename.frmをコピーしてから、delete table文を発行します。また

  • あなたがローカルホスト上のファイルにダンプしているとき= 5000 net_buffer_length使用する必要はありません。
  • その他のバックアップソリューション - Percona Xtrabackup
+0

ありがとうございました。 add-drop-database – pgee70

+1

でデータベース作成コマンドが追加されていないため、 --add-drop-database - データベース を追加しました。tablename.frmをコピーした後、ファイルに適切な権限があり、ユーザ:mysqlからアクセスできるグループ。 – NEB

3

スキーマをドロップし、それを再度作成している間、私は、その問題が発生しました。私はC:\ProgramData\MySQL\MySQL Server 5.6\data\my_database_nameに行き、前のデータベース作成から残ったテーブルを削除することでこの問題を克服しました。必要に応じてデータベース全体を削除することもできます。あなたがXAMPPその後、最初の( "停止")のMySQL を使用している場合

0

次にCに移動:\私の場合のDNBで私のデータベース名のフォルダですXAMPP \ mysqlの\データ\ DNB 。 これを開いて.ibdファイルを削除します。したがって、すでにMYSQLを停止している場合にのみ削除することができます。 次にphpmyadmin に移動します。1 phpmyadminをクリックします。 2下に表示されているデータベースをクリックしてください(あなたのケースではserver.127.0.0.1私の変更があります) 3ドロップしたいデータベースをチェックし、ドロップをクリックしてください。 4同じ名前のデータベースを作成し、データベースを正常にインポートできます。 here you can see how you drop database from phpmyadmin

6

この問題をスキップする最も簡単な方法は、手動でphpmyadminデータベースのダンプを編集し、INNODB以外の問題が発生したテーブルを編集/変更することでした。問題表をENGINE=MyISAMとvoilaに変更しました。インポートが機能しました。

CREATE TABLE IF NOT EXISTS `home3_acymailing_tag` (
    `tagid` smallint(5) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(250) NOT NULL, 
    `userid` int(10) unsigned DEFAULT NULL, 
    PRIMARY KEY (`tagid`), 
    KEY `useridindex` (`userid`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 
+1

答えを再フォーマットすることを検討してください。 – aggsol

+0

ここにすべての推奨事項、これは私のために働いた解決策です。 –

関連する問題