PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dodawanie tabeli użytkowników/kont do Postgresa w Django View

Moje pieniądze są na błędnie napisanym nazwisku. Zauważyłem w komunikacie o błędzie, że masz

OmniCloud_App_accounts
OmniCloud_App_user

Druga tabela używa liczby pojedynczej. Nie ma przypadkiem drugiego takiego stołu:

OmniCloud_App_users

Ponadto używanie identyfikatorów z mieszanymi literami w PostgreSQL jest świetnym źródłem reputacji tutaj w SO. Ugryzie cię prędzej czy później. Ofiary tego szaleństwa są tu stałymi bywalcami. Może dowolna tabela o tej nazwie - i zapomniałeś podwójnych cudzysłowów w "OmniCloud_App_user" gdzieś?

omnicloud_app_user

To albo to, albo transakcja zapisująca użytkownika nie została jeszcze zatwierdzona. Czy możesz tylko utworzyć użytkownika (i jeszcze żadnych kont) i sprawdzić, czy trafi on do właściwej bazy danych w tabeli i z właściwym identyfikatorem?

Edycja:narzędzia do diagnozowania problemu

Jeśli wiesz że użytkownicy są tworzeni, to pytanie brzmi:czy obcy klucz ograniczenie user_id_refs_id_468fbcec324e93d2 spojrzeć we właściwe miejsce? Ta sama baza danych? Ten sam schemat? Ta sama tabela?

Aby dowiedzieć się, które tabele istnieją w Twojej bazie danych, wypróbuj następujące zapytanie (jeśli masz niezbędne uprawnienia):

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';

Pokazuje wszystkie tabele we wszystkich schematach, które mają słowo „user” w nazwie, bez uwzględniania wielkości liter. Plus, jeśli tabela ma wyzwalacze (może powoduje twój problem) i ile jest w nim wierszy (oszacowanie zaktualizowane przez ANALYZE ). Może dać ci trop...

Możesz także użyć metapolecenia \d standardowego klienta wiersza poleceń (interaktywny terminal) psql .

Uruchomiłbym przypadek testowy i kazałby serwerowi postgres rejestrować wszystko, co dostaje. W tym celu ustaw ten parametr:

set log_statement = 'all';

Podręcznik o parametrach rejestrowania .

Podręcznik jak ustawić parametry .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie parametru pozycyjnego ($1,..) w psql

  2. Wartości NULL dla referential_constraints.unique_constraint_* kolumn w schemacie informacyjnym

  3. Sequelize ma wiele, należy do lub oba?

  4. Funkcja zwracająca dynamiczny zestaw kolumn dla danej tabeli

  5. Nadaj uprawnienia wszystkim użytkownikom, obecnym i przyszłym