2017-12-21 2 views
0

スプリングブートが自動的に実行され、schema.sqlファイルが実行されるたびに、統合テストが開始されます。スプリングブートschema.sqlがmysqldumpファイルで動作しない

問題は次のとおりです。
それは私にエラー

を与える親行を削除または更新できません:外部キー制約が失敗します。

私は問題なくmysqlコマンドを使用して、このファイルをインポートすることができていますので、私は春のブートスクリプトを実行するmysqlコマンドを使用していないと思われます。
schema.sqlは、mysqldumpによって作成されます。何も変更されていません。
それは私がやった後、次の「回避策」作品:
1が/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
2.テーブルを避けるために正しい順序で作成されるようにcreate tableブロックを再手配などのMySQLの特定のキーワード/コマンドを取り除きます外部キー制約エラー。

質問: 春ブーツがが行うmysqlのように私のschema.sqlファイルをインポートできるようにする方法は?ファイルをmysqldumpにして、「ハッキリの回避策」を使用する代わりにテストに使用するといいでしょう。

ありがとうございました!

+0

問題は、 'autocommit'パラメータに関連していることを前提としています。これは、Springでは' true'、MySQL CLIでは 'false'です。 –

+0

@RomanProshinあなたはそれを詳しく教えていただけますか? ** spring.datasource.tomcat.default-auto-commit **のように 'autocommit'? –

+0

さて、 'spring.datasource.auto-commit'がより適していると思います。あるいは、両方のバリエーションを試してみてください。 –

答えて

1

があなたの.sqlファイルの先頭

SET FOREIGN_KEY_CHECKS=0; 

と終わりで

SET FOREIGN_KEY_CHECKS=1; 

に追加コマンドは、外部キーチェックを無効にし、それをバック復元します。

ダンプするだけですべてのテーブルのコンテンツ行が挿入されますが、関連するテーブルはまだ挿入されていません。

ダンプからリストアするMYSQLには自動的に行があります。

+0

ご協力いただきありがとうございます。だから、答えはいいえ、春の起動のためのmysqldumpコマンドから生成されたmysqlダンプファイルを手動で変更せずにテストする前にインポートする方法はありませんか? –

+0

私は確信していません... MySQLのダンプ作成には、制約チェックを設定/復元するオプションがあります。しかし、必要なのは、始めと終わりにSQL 1に2行を追加するだけです。 – StanislavL

関連する問題