PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Добавяне на таблица с потребители/акаунти към Postgres в Django View

Парите ми са на грешно изписано име. Забелязвам в съобщението за грешка, че имате

OmniCloud_App_accounts
OmniCloud_App_user

Втората таблица използва единствено число. Случайно няма втора таблица като тази:

OmniCloud_App_users

Освен това използването на идентификатори със смесени регистри в PostgreSQL е чудесен източник на репутация тук в SO. Рано или късно ще те ухапе. Жертвите на това безумие са редовни тук. Всяка таблица с това име може би - и сте забравили двойните кавички в "OmniCloud_App_user" някъде?

omnicloud_app_user

Или това, или транзакцията, запазваща потребителя, все още не е ангажирана. Можете ли да създадете само потребителя (и все още без акаунти) и да проверите дали се озовава в правилната база данни в таблицата и с правилния идентификатор?

Редактиране:инструменти за диагностициране на проблема

Ако знаете че се създават потребители, тогава въпросът е:има ли ограничението за външен ключ user_id_refs_id_468fbcec324e93d2 погледнете на правилното място? Същата база данни? Същата схема? Същата маса?

За да разберете кои таблици съществуват във вашата база данни, опитайте следната заявка (ако имате необходимите права):

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

Показва всички таблици във всички схеми, които имат „потребител“ в името, без значение за главни и малки букви. Освен това, ако таблицата има тригери (може причина за вашия проблем) и колко реда има в него (оценката е актуализирана от ANALYZE ). Може да ви даде представа...

Можете също да използвате мета-командата \d на стандартния клиент на командния ред (интерактивен терминал) psql .

Бих пуснал тестов случай и бих накарал postgres сървъра да регистрира всичко, което получава. Задайте този параметър за тази цел:

set log_statement = 'all';

Ръководството относно параметрите за регистриране .

Ръководството за как да задавате параметри .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 10 на Linux - LC_COLLATE локал en_US.utf-8 не е валиден

  2. Как да създадете SQL масив от Java List?

  3. Актуализирането на цяла колона от jsonb член е неуспешно с:колоната е от тип integer, но изразът е от тип jsonb

  4. Преглед на генерираните колони за PostgreSQL

  5. Динамично изпълнение на заявки в PL/pgSQL