運用データベース(mysqlバージョン5.1.66)の毎日のバックアップmysqldumpバックアップを実行します。
mysqldump --user=username --password=secret -C -e --create-options --hex-blob --net_buffer_length=5000 databasename > file
また、開発マシンでそのデータベースの毎日の復元を行います(mysqlバージョン5.6.12)
mysql --user=username --password=secret databasename < file
25行目でエラー1813(HY000)が発生しました。テーブル 'databasename
.tablename
'のテーブルスペースが存在します。 IMPORTの前に表領域を破棄してください。
私の読書は、これがmysql innodbデータベースがコマンドを必要とするためであることを示しています:
ALTER TABLE tbl_name DISCARD TABLESPACE;
テーブルを削除する前に実行する-テーブルを削除するだけでは、インデックスを削除するのに十分ではないようです。 (私の開発サーバーはinnodb_file_per_tableオプションを使用します)
実稼働データベースで削除されたデータを開発データベースに保持できる可能性があるため、「置換」オプションを使用したくありません。
エラーが発生すると、テーブルは読み取り不能になりますが、mysqldを再起動すると修正されます。
質問は、この問題を修正するのに役立つmysqlダンプオプションがありますか、それともエラーを防ぐデータをインポートする別の方法がありますか?
読んでくれてありがとう。
Tablename.ibdはあるがtablename.frmはないようです。
チェックする:
cd/var/lib/mysql/database_name
エラーが発生しているテーブル名を検索します。
ls tablename。*
次の2つのファイルが表示されます。
tablename.ibd tablename.frm
しかし、私はあなたが見ていないだけだと推測しています
tablename.ibd
修正するには、いくつかのオプションがあります。
--add-drop-database
また:
この問題をスキップする最も簡単な方法は、phpmyadminデータベースダンプを手動で編集し、問題のあるテーブルをINNODB
以外のものに編集/変更することです。問題の表をENGINE=MyISAM
と出来上がりに変更しました。インポートが機能しました。
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 ;
また、スキーマを削除して再度作成しているときに、この問題が発生しました。 C:\ProgramData\MySQL\MySQL Server 5.6\data\my_database_name
および以前のデータベース作成から残ったテーブルを削除します。必要に応じて、データベース全体を削除することもできます。
xAMPPを使用している場合は、まずMySQLを「停止」してから、C:\ xampp\mysql\data\dnbに移動します。この場合、dnbはデータベース名フォルダーです。そのため、それを開いて.ibdファイルを削除します。したがって、MYsqlをすでに停止している場合にのみ削除できます。次にphpmyadminに移動し、1 phpmyadminをクリックします。 2下に表示されるデータベース(この場合はserver.127.0.0.1が変更される可能性があります)をクリックします。3ドロップするデータベースを確認し、ドロップをクリックします。 4その後、同じ名前でデータベースを作成し、データベースを正常にインポートできます。 phpmyadminからデータベースを削除する方法を確認できます