Парите ми са на грешно изписано име. Забелязвам в съобщението за грешка, че имате
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';
Ръководството относно параметрите за регистриране .
Ръководството за как да задавате параметри .