Pre-checks
Deployment Method
Docker
Steps to Reproduce
1、git pull origin main
2、docker exec clawith-backend-1 alembic upgrade heads
Expected vs Actual Behavior
报错
docker exec clawith-backend-1 alembic upgrade heads
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> add_quota_fields, Add usage quota fields to users, agents, and tenants tables.
INFO [alembic.runtime.migration] Running upgrade add_quota_fields -> add_agent_tool_source, Add source and installed_by_agent_id to agent_tools
INFO [alembic.runtime.migration] Running upgrade add_agent_tool_source -> add_chat_sessions, Add chat_sessions table and update existing chat_messages conversation_ids.
INFO [alembic.runtime.migration] Running upgrade add_chat_sessions -> add_invitation_codes, Add invitation_codes table.
INFO [alembic.runtime.migration] Running upgrade add_invitation_codes -> add_participants, Add participants table, extend chat_sessions and chat_messages, migrate messages data, drop messages table.
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 526, in _prepare_and_execute
prepared_stmt, attributes = await adapt_connection._prepare(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 773, in _prepare
prepared_stmt = await self._connection.prepare(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 638, in prepare
return await self._prepare(
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 657, in _prepare
stmt = await self._get_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 443, in _get_statement
statement = await self._protocol.prepare(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "asyncpg/protocol/protocol.pyx", line 165, in prepare
asyncpg.exceptions.UndefinedColumnError: column "username" does not exist
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 585, in execute
self.adapt_connection.await(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
value = await result
^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 563, in _prepare_and_execute
self._handle_exception(error)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 513, in _handle_exception
self._adapt_connection._handle_exception(error)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 797, in _handle_exception
raise translated_error from error
sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.ProgrammingError: <class 'asyncpg.exceptions.UndefinedColumnError'>: column "username" does not exist
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/bin/alembic", line 8, in
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.12/site-packages/alembic/config.py", line 1047, in main
CommandLine(prog=prog).main(argv=argv)
File "/usr/local/lib/python3.12/site-packages/alembic/config.py", line 1037, in main
self.run_cmd(cfg, options)
File "/usr/local/lib/python3.12/site-packages/alembic/config.py", line 971, in run_cmd
fn(
File "/usr/local/lib/python3.12/site-packages/alembic/command.py", line 483, in upgrade
script.run_env()
File "/usr/local/lib/python3.12/site-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.12/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 999, in exec_module
File "", line 488, in _call_with_frames_removed
File "/app/alembic/env.py", line 85, in
run_migrations_online()
File "/app/alembic/env.py", line 79, in run_migrations_online
asyncio.run(run_async_migrations())
File "/usr/local/lib/python3.12/asyncio/runners.py", line 195, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/app/alembic/env.py", line 73, in run_async_migrations
await connection.run_sync(do_run_migrations)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 888, in run_sync
return await greenlet_spawn(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
result = context.switch(value)
^^^^^^^^^^^^^^^^^^^^^
File "/app/alembic/env.py", line 62, in do_run_migrations
context.run_migrations()
File "", line 8, in run_migrations
File "/usr/local/lib/python3.12/site-packages/alembic/runtime/environment.py", line 969, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python3.12/site-packages/alembic/runtime/migration.py", line 626, in run_migrations
step.migration_fn(**kw)
File "/app/alembic/versions/add_participants.py", line 33, in upgrade
conn.execute(sa.text("""
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 585, in execute
self.adapt_connection.await(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
value = await result
^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 563, in _prepare_and_execute
self._handle_exception(error)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 513, in _handle_exception
self._adapt_connection._handle_exception(error)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 797, in _handle_exception
raise translated_error from error
sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) <class 'asyncpg.exceptions.UndefinedColumnError'>: column "username" does not exist
[SQL:
INSERT INTO participants (id, type, ref_id, display_name, avatar_url)
SELECT gen_random_uuid(), 'user', id, COALESCE(display_name, username), avatar_url
FROM users
ON CONFLICT DO NOTHING
]
我去查看数据,发现确实没有这个字段 username
docker exec -it $(docker ps -qf "name=postgres") psql -U clawith -d clawith -c "\d users"
Table "public.users"
Column | Type | Collation | Nullable | Default
-----------------------+--------------------------+-----------+----------+---------
id | uuid | | not null |
identity_id | uuid | | |
tenant_id | uuid | | |
display_name | character varying(100) | | not null |
avatar_url | character varying(500) | | |
title | character varying(100) | | |
role | user_role_enum | | not null |
is_active | boolean | | not null |
registration_source | character varying(50) | | |
created_at | timestamp with time zone | | not null | now()
updated_at | timestamp with time zone | | not null | now()
quota_message_limit | integer | | not null |
quota_message_period | character varying(20) | | not null |
quota_messages_used | integer | | not null |
quota_period_start | timestamp with time zone | | |
quota_max_agents | integer | | not null |
quota_agent_ttl_hours | integer | | not null |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
"ix_users_identity_id" btree (identity_id)
Foreign-key constraints:
"users_identity_id_fkey" FOREIGN KEY (identity_id) REFERENCES identities(id)
"users_tenant_id_fkey" FOREIGN KEY (tenant_id) REFERENCES tenants(id)
Referenced by:
TABLE "agent_schedules" CONSTRAINT "agent_schedules_created_by_fkey" FOREIGN KEY (created_by) REFERENCES users(id)
TABLE "agent_templates" CONSTRAINT "agent_templates_created_by_fkey" FOREIGN KEY (created_by) REFERENCES users(id)
TABLE "agents" CONSTRAINT "agents_creator_id_fkey" FOREIGN KEY (creator_id) REFERENCES users(id)
TABLE "approval_requests" CONSTRAINT "approval_requests_resolved_by_fkey" FOREIGN KEY (resolved_by) REFERENCES users(id)
TABLE "audit_logs" CONSTRAINT "audit_logs_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "chat_messages" CONSTRAINT "chat_messages_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "chat_sessions" CONSTRAINT "chat_sessions_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "enterprise_info" CONSTRAINT "enterprise_info_updated_by_fkey" FOREIGN KEY (updated_by) REFERENCES users(id)
TABLE "gateway_messages" CONSTRAINT "gateway_messages_sender_user_id_fkey" FOREIGN KEY (sender_user_id) REFERENCES users(id)
TABLE "invitation_codes" CONSTRAINT "invitation_codes_created_by_fkey" FOREIGN KEY (created_by) REFERENCES users(id)
TABLE "notifications" CONSTRAINT "notifications_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "published_pages" CONSTRAINT "published_pages_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "tasks" CONSTRAINT "tasks_created_by_fkey" FOREIGN KEY (created_by) REFERENCES users(id)
TABLE "tasks" CONSTRAINT "tasks_supervision_target_user_id_fkey" FOREIGN KEY (supervision_target_user_id) REFERENCES users(id)
Logs / Screenshots
No response
Pre-checks
Deployment Method
Docker
Steps to Reproduce
1、git pull origin main
2、docker exec clawith-backend-1 alembic upgrade heads
Expected vs Actual Behavior
报错
docker exec clawith-backend-1 alembic upgrade heads
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> add_quota_fields, Add usage quota fields to users, agents, and tenants tables.
INFO [alembic.runtime.migration] Running upgrade add_quota_fields -> add_agent_tool_source, Add source and installed_by_agent_id to agent_tools
INFO [alembic.runtime.migration] Running upgrade add_agent_tool_source -> add_chat_sessions, Add chat_sessions table and update existing chat_messages conversation_ids.
INFO [alembic.runtime.migration] Running upgrade add_chat_sessions -> add_invitation_codes, Add invitation_codes table.
INFO [alembic.runtime.migration] Running upgrade add_invitation_codes -> add_participants, Add participants table, extend chat_sessions and chat_messages, migrate messages data, drop messages table.
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 526, in _prepare_and_execute
prepared_stmt, attributes = await adapt_connection._prepare(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 773, in _prepare
prepared_stmt = await self._connection.prepare(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 638, in prepare
return await self._prepare(
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 657, in _prepare
stmt = await self._get_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 443, in _get_statement
statement = await self._protocol.prepare(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "asyncpg/protocol/protocol.pyx", line 165, in prepare
asyncpg.exceptions.UndefinedColumnError: column "username" does not exist
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 585, in execute
self.adapt_connection.await(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
value = await result
^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 563, in _prepare_and_execute
self._handle_exception(error)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 513, in _handle_exception
self._adapt_connection._handle_exception(error)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 797, in _handle_exception
raise translated_error from error
sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.ProgrammingError: <class 'asyncpg.exceptions.UndefinedColumnError'>: column "username" does not exist
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/bin/alembic", line 8, in
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.12/site-packages/alembic/config.py", line 1047, in main
CommandLine(prog=prog).main(argv=argv)
File "/usr/local/lib/python3.12/site-packages/alembic/config.py", line 1037, in main
self.run_cmd(cfg, options)
File "/usr/local/lib/python3.12/site-packages/alembic/config.py", line 971, in run_cmd
fn(
File "/usr/local/lib/python3.12/site-packages/alembic/command.py", line 483, in upgrade
script.run_env()
File "/usr/local/lib/python3.12/site-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.12/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 999, in exec_module
File "", line 488, in _call_with_frames_removed
File "/app/alembic/env.py", line 85, in
run_migrations_online()
File "/app/alembic/env.py", line 79, in run_migrations_online
asyncio.run(run_async_migrations())
File "/usr/local/lib/python3.12/asyncio/runners.py", line 195, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/app/alembic/env.py", line 73, in run_async_migrations
await connection.run_sync(do_run_migrations)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 888, in run_sync
return await greenlet_spawn(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
result = context.switch(value)
^^^^^^^^^^^^^^^^^^^^^
File "/app/alembic/env.py", line 62, in do_run_migrations
context.run_migrations()
File "", line 8, in run_migrations
File "/usr/local/lib/python3.12/site-packages/alembic/runtime/environment.py", line 969, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python3.12/site-packages/alembic/runtime/migration.py", line 626, in run_migrations
step.migration_fn(**kw)
File "/app/alembic/versions/add_participants.py", line 33, in upgrade
conn.execute(sa.text("""
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 585, in execute
self.adapt_connection.await(
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
value = await result
^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 563, in _prepare_and_execute
self._handle_exception(error)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 513, in _handle_exception
self._adapt_connection._handle_exception(error)
File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 797, in _handle_exception
raise translated_error from error
sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) <class 'asyncpg.exceptions.UndefinedColumnError'>: column "username" does not exist
[SQL:
INSERT INTO participants (id, type, ref_id, display_name, avatar_url)
SELECT gen_random_uuid(), 'user', id, COALESCE(display_name, username), avatar_url
FROM users
ON CONFLICT DO NOTHING
]
我去查看数据,发现确实没有这个字段 username
docker exec -it $(docker ps -qf "name=postgres") psql -U clawith -d clawith -c "\d users"
Table "public.users"
Column | Type | Collation | Nullable | Default
-----------------------+--------------------------+-----------+----------+---------
id | uuid | | not null |
identity_id | uuid | | |
tenant_id | uuid | | |
display_name | character varying(100) | | not null |
avatar_url | character varying(500) | | |
title | character varying(100) | | |
role | user_role_enum | | not null |
is_active | boolean | | not null |
registration_source | character varying(50) | | |
created_at | timestamp with time zone | | not null | now()
updated_at | timestamp with time zone | | not null | now()
quota_message_limit | integer | | not null |
quota_message_period | character varying(20) | | not null |
quota_messages_used | integer | | not null |
quota_period_start | timestamp with time zone | | |
quota_max_agents | integer | | not null |
quota_agent_ttl_hours | integer | | not null |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
"ix_users_identity_id" btree (identity_id)
Foreign-key constraints:
"users_identity_id_fkey" FOREIGN KEY (identity_id) REFERENCES identities(id)
"users_tenant_id_fkey" FOREIGN KEY (tenant_id) REFERENCES tenants(id)
Referenced by:
TABLE "agent_schedules" CONSTRAINT "agent_schedules_created_by_fkey" FOREIGN KEY (created_by) REFERENCES users(id)
TABLE "agent_templates" CONSTRAINT "agent_templates_created_by_fkey" FOREIGN KEY (created_by) REFERENCES users(id)
TABLE "agents" CONSTRAINT "agents_creator_id_fkey" FOREIGN KEY (creator_id) REFERENCES users(id)
TABLE "approval_requests" CONSTRAINT "approval_requests_resolved_by_fkey" FOREIGN KEY (resolved_by) REFERENCES users(id)
TABLE "audit_logs" CONSTRAINT "audit_logs_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "chat_messages" CONSTRAINT "chat_messages_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "chat_sessions" CONSTRAINT "chat_sessions_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "enterprise_info" CONSTRAINT "enterprise_info_updated_by_fkey" FOREIGN KEY (updated_by) REFERENCES users(id)
TABLE "gateway_messages" CONSTRAINT "gateway_messages_sender_user_id_fkey" FOREIGN KEY (sender_user_id) REFERENCES users(id)
TABLE "invitation_codes" CONSTRAINT "invitation_codes_created_by_fkey" FOREIGN KEY (created_by) REFERENCES users(id)
TABLE "notifications" CONSTRAINT "notifications_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "published_pages" CONSTRAINT "published_pages_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
TABLE "tasks" CONSTRAINT "tasks_created_by_fkey" FOREIGN KEY (created_by) REFERENCES users(id)
TABLE "tasks" CONSTRAINT "tasks_supervision_target_user_id_fkey" FOREIGN KEY (supervision_target_user_id) REFERENCES users(id)
Logs / Screenshots
No response