DEV Community

kimihito
kimihito

Posted on • Originally published at kimihito.hatenablog.com on

外部キー制約を付与したデータにより Herokuで db:fixtures:load が落ちてしまう

TL;DR

ENV['FIXTURES'] = 'hoge,fuga,bar' と並び順を指定してから投入しているが、あまり良いやり方ではなさそうなので、なにか良い方法があれば教えてください 🙏

遭遇した問題

今作っているアプリケーションをHerokuで開発している。 Review Appsで動作を確認したいので、 db:fixtures:load を読みだしたところ下記のようなエラーが出た。

ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: insert or update on table "hoge" violates foreign key constraint "fk\_rails\_xxxxx"

Rails のバージョンは 5.2.3 。

原因

テーブル fuga が hoge に対して外部キー制約を持っていたが、 hoge より先に fuga のデータを作ろうとしてしまいエラーになっているようだった。

Use SET CONSTRAINTS for disable_referential_integrity without superuser privileges (take 2)Revertされており、現状解決策はなさそう?

やったこと

この辺を見てENV['FIXTURES'] = 'hoge,fuga,bar' と投入順を指定することで対処した。ただこれだと fixtures/*.yml の増減に引っ張られてしまうので、微妙だと思っている。

なにか他に良い方法があれば教えて下さい 🙏

参考

Heroku CI with rails fixtures - Stack Overflow

Top comments (0)