エラーが発生した経緯
postgresqlのupsert(データがあれば、update、なければinsert)を使いたくて調べたところ
conflictという関数が使えるらしいということで使ってみた結果発生したエラー。
Query 1 ERROR: ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification
エラーを解決方法(というか何故エラーが発生したか)
on conflictにキーを設定するのだけれど、
ユニークキーである必要があった。
今回は、わざわざユニークキーをつけることはしたくなかったので、別の方法で実装することにしました。
エンジニアのエラー英語読解

クエリ 1 エラー: エラー: ON CONFLICT 仕様に一致する一意または除外制約がありません
間違いやすいけど、Thereは副詞なのでM。
主語ではない。
isがV。
「no unique or exclusion」までが形容詞でC。
constraintは、Sで主語。
matching~は、主語の補足説明。なので、constraintから最後までが1つの主語として考えてよさそう。
S:「ON CONFLICT 仕様に一致する制約」
C:「一意または除外がない」
SVCの第2文型。
ここに行き着くまでに長かったーーー。
単語
unique
形容詞:唯一の
発音:juːníːk [ユーニーク]
exclusion
名詞:除外
発音:iksklúːʒən [イクスクルージョン]
constraint
名詞:制限、制約
発音:kənstréint [コンストゥレイント]
matching
名詞:適合している
発音:mǽtʃiŋ [マッチング]
specification
名詞:仕様
発音:spèsəfikéiʃən [スペサフィケイション]
エンジニアのエラー英語のまとめ

難しい!!
本当に難しかった。。。orz
特に、SとCの境界線が本当に謎で悩みまくった。
多分あってるはず。。。
文型の学習はしたつもりだったけど、まだまだ読解には時間がかかります。
ただ!文型なしに闇雲に訳してた時より理解力は上がってきているはず
