Som joop förklarade är din SQL-fil inkonsekvent.
Det finns en främmande nyckel-begränsning från raffle.user_id
till "user".id
, vilket betyder att för varje värde i raffle.user_id
det måste finnas en rad i "user"
där id
har samma värde.
Nu finns det ingen rad infogat i "user"
med ett id
lika med 1, men skriptet försöker infoga en rad i raffle
med user_id
lika med 1.
Det bryter mot begränsningen för främmande nyckel och orsakar ett fel. När det väl har uppstått ett fel i en PostgreSQL-transaktion är allt du kan göra ROLLBACK
. Tills du gör det kommer alla uttalanden i transaktionen att misslyckas med det fel du observerar.
De enda lösningarna du har är antingen att fixa data så att de är konsekventa eller att ge upp konsekvens genom att ta bort den främmande nyckeln.
Anmärkning: det är en dålig idé att välja ett reserverat SQL-nyckelord som USER
som namn.