※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

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したファイル名)