「[mysql] バックアップの取得とリストア」の編集履歴(バックアップ)一覧に戻る

[mysql] バックアップの取得とリストア - (2007/01/22 (月) 13:43:10) のソース

mysqldumpで全テーブルのバックアップをとった後、
O-Rマッピングツール(Hibernate)でテーブルを作成し
バックアップからINSERT文だけ抜き出して実行すると
外部キー制約で登録できない。

取得したバックアップファイルをそのままインポートすると、うまくいく・・

で、バックアップファイルを見ると

 /*!40000 ALTER TABLE `TEST_TABLE` DISABLE KEYS */;
 LOCK TABLES `TEST_TABLE` WRITE;
 INSERT INTO `TEST_TABLE` VALUES (入力するデータ);
 UNLOCK TABLES;
 /*!40000 ALTER TABLE `TEST_TABLE` ENABLE KEYS */;

とあり、どうやらDISABLE KEYSとかENABLE KEYSで挟んであげればよさそう。

(追記)
....よくなかった。
ダンプしたファイルのこの辺が必要みたい。

 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
 /*!40101 SET NAMES utf8 */;
 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,  FOREIGN_KEY_CHECKS=0 */;
 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

だから、こうする。
grep -e "\/" -e INSERT (dumpしたファイル名)