sql >> Databasteknik >  >> RDS >> PostgreSQL

Lägga till en användar-/kontotabell till Postgres i Django View

Mina pengar är på ett felstavat namn. Jag märker i felmeddelandet att du har

OmniCloud_App_accounts
OmniCloud_App_user

Andra tabellen använder singular. Det finns inte ett andra bord som detta av en slump:

OmniCloud_App_users

Att använda blandade case-identifierare i PostgreSQL är också en stor källa till rykte här på SO. Det kommer att bita dig förr eller senare. Offren för den dårskapen är stammisar här. Vilken tabell som helst med detta namn kanske - och du glömde de dubbla citattecken i "OmniCloud_App_user" någonstans?

omnicloud_app_user

Det är antingen det eller transaktionen som sparar användaren har inte begåtts ännu. Kan man bara skapa användaren (och inga konton än) och kontrollera om den hamnar i rätt databas i tabellen och med rätt ID?

Redigera:verktyg för att diagnostisera problemet

Om du vet att användare skapas, då är frågan:är den främmande nyckelbegränsningen user_id_refs_id_468fbcec324e93d2 titta på rätt ställe? Samma databas? Samma schema? Samma bord?

För att ta reda på vilka tabeller som finns i din databas, försök med följande fråga (om du har de nödvändiga rättigheterna):

SELECT n.nspname AS schema_name
      ,c.relname AS table_name
      ,c.relhastriggers
      ,c.reltuples
FROM   pg_catalog.pg_class c
LEFT   JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE  c.relname ~~* '%user%'
AND    c.relkind = 'r'
AND    nspname <> 'pg_catalog';

Visar alla tabeller i alla scheman som har "användare" i namnet, skiftlägesokänslig. Plus om tabellen har triggers (kan orsaka ditt problem) och hur många rader det finns (uppskattning uppdaterad av ANALYSE ). Kan ge dig en ledning ...

Du kan också använda metakommandot \d för den vanliga kommandoradsklienten (interaktiv terminal) psql .

Jag skulle köra ett testfall och låta postgres-servern logga allt den får. Ställ in denna parameter för ändamålet:

set log_statement = 'all';

Manualen om loggningsparametrar .

Handboken om hur man ställer in parametrar .



  1. Rails 3.2 Postgres Save Error ActiveRecord::StatementInvalid:PG::Error:ERROR:Syntaxfel nära 'T' vid position 5

  2. Hur man skapar en tabell endast om den inte finns i PostgreSQL

  3. Duplicerat nyckelvärde bryter mot unik begränsning, CakePHP

  4. Automatisk återställning om COMMIT TRANSACTION inte uppnås