現象
AWS Database Migration Service (DMS) で複数のテーブルにデータを入れようとすると、いくつかデータが入らないテーブルが出てきます。
原因
テーブルにリレーションを張っていると、参照元テーブル→参照先テーブルの順にデータを入れないとデータが入りません。
しかしAWS Database Migration Service (DMS)は順番関係なくデータを入れようとしますので、データが入らないことがあります。
対応策
エンドポイントの「追加の接続属性」に
initstmt=SET FOREIGN_KEY_CHECKS=0
を入れておくことで、リレーションのエラーを回避させることができます。
エンドポイント→エンドポイント名を選択→右上の「アクション」ボタンを押し「変更」ボタンを押す→「エンドポイントの変更」画面で
このように設定して、「保存」ボタンを押します。
この設定をすると、接続中は外部キーエラーのチェックをしなくなるので、リレーションのエラーが出ずに、全テーブルのデータをきちんと入れることができます。
参考文献
https://www.wantedly.com/companies/serverworks/post_articles/115869
https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html