Indico 3.2 Error after update from 3.1.1

Hi was just testet it on testserver with centos7 and apache, get database errors. 3.1.1 runs fine.

Just followed the normal update instructions from Upgrade — Indico 3.2 documentation except the python update at the end.

Traceback
---------
Traceback (most recent call last):
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
    )
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedTable: relation "users.affiliations" does not exist
LINE 2: ...d = categories.principals.user_id LEFT OUTER JOIN users.affi...
                                                             ^

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask/app.py", line 1516, in full_dispatch_request
    if rv is None:
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask/app.py", line 1502, in dispatch_request
    # otherwise dispatch to the handler for that endpoint
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/flask/util.py", line 79, in wrapper
    return obj().process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/rh.py", line 291, in process
    handle_sqlalchemy_database_error()  # this will re-raise an exception
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/rh.py", line 281, in process
    res = self._do_process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/rh.py", line 252, in _do_process
    rv = self._process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/categories/controllers/display.py", line 233, in _process
    children_strategy.load_only('id')
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/categories/controllers/util.py", line 144, in get_category_view_params
    managers = sorted(category.get_manager_list(), key=attrgetter('principal_type.name', 'name'))
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/core/db/sqlalchemy/protection.py", line 500, in get_manager_list
    for x in self.acl_entries
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 481, in __get__
    )
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 941, in get
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 977, in _fire_loader_callables
    elif self.callable_:
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 911, in _load_for_state
    return self._emit_lazyload(
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 1047, in _emit_lazyload
    result = session.execute(
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1692, in execute
    orm_exec_state._starting_event_idx = idx
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1614, in _execute_20
    (
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
    d.pop("_is_clone_of", None)
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
    self.dispatch.after_execute(
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
    statement,
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
    util.raise_(
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
    try:
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
    )
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "users.affiliations" does not exist
LINE 2: ...d = categories.principals.user_id LEFT OUTER JOIN users.affi...
                                                             ^

[SQL: SELECT categories.principals.mp_group_provider AS categories_principals_mp_group_provider, categories.principals.mp_group_name AS categories_principals_mp_group_name, categories.principals.read_access AS categories_principals_read_access, categories.principals.full_access AS
categories_principals_full_access, categories.principals.permissions AS categories_principals_permissions, categories.principals.id AS categories_principals_id, categories.principals.category_id AS categories_principals_category_id, categories.principals.type AS categories_principals_type,
categories.principals.user_id AS categories_principals_user_id, categories.principals.local_group_id AS categories_principals_local_group_id, categories.principals.ip_network_group_id AS categories_principals_ip_network_group_id, categories.principals.category_role_id AS
categories_principals_category_role_id, users_1.title AS users_1_title, affiliations_1.id AS affiliations_1_id, affiliations_1.user_id AS affiliations_1_user_id, affiliations_1.name AS affiliations_1_name, emails_1.id AS emails_1_id, emails_1.user_id AS emails_1_user_id, emails_1.email AS
emails_1_email, emails_1.is_primary AS emails_1_is_primary, emails_1.is_user_deleted AS emails_1_is_user_deleted, users_1.id AS users_1_id, users_1.first_name AS users_1_first_name, users_1.last_name AS users_1_last_name, users_1.phone AS users_1_phone, users_1.address AS users_1_address,
users_1.merged_into_id AS users_1_merged_into_id, users_1.is_system AS users_1_is_system, users_1.is_admin AS users_1_is_admin, users_1.is_blocked AS users_1_is_blocked, users_1.is_pending AS users_1_is_pending, users_1.is_deleted AS users_1_is_deleted, users_1.signing_secret AS
users_1_signing_secret, users_1.picture_metadata AS users_1_picture_metadata, users_1.picture_source AS users_1_picture_source, groups_1.id AS groups_1_id, groups_1.name AS groups_1_name, ip_networks_1.group_id AS ip_networks_1_group_id, ip_networks_1.network AS ip_networks_1_network,
ip_network_groups_1.id AS ip_network_groups_1_id, ip_network_groups_1.name AS ip_network_groups_1_name, ip_network_groups_1.description AS ip_network_groups_1_description, ip_network_groups_1.hidden AS ip_network_groups_1_hidden, ip_network_groups_1.attachment_access_override AS
ip_network_groups_1_attachment_access_override, roles_1.id AS roles_1_id, roles_1.category_id AS roles_1_category_id, roles_1.name AS roles_1_name, roles_1.code AS roles_1_code, roles_1.color AS roles_1_color
FROM categories.principals LEFT OUTER JOIN users.users AS users_1 ON users_1.id = categories.principals.user_id LEFT OUTER JOIN users.affiliations AS affiliations_1 ON users_1.id = affiliations_1.user_id LEFT OUTER JOIN users.emails AS emails_1 ON users_1.id = emails_1.user_id AND
emails_1.is_primary LEFT OUTER JOIN users.groups AS groups_1 ON groups_1.id = categories.principals.local_group_id LEFT OUTER JOIN indico.ip_network_groups AS ip_network_groups_1 ON ip_network_groups_1.id = categories.principals.ip_network_group_id LEFT OUTER JOIN indico.ip_networks AS ip_networks_1
ON ip_network_groups_1.id = ip_networks_1.group_id LEFT OUTER JOIN categories.roles AS roles_1 ON roles_1.id = categories.principals.category_role_id
WHERE %(param_1)s = categories.principals.category_id]
[parameters: {'param_1': 0}]
(Background on this error at: https://sqlalche.me/e/14/f405)


Request Data
------------
{'data': {'get': {},
          'headers': {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                      'Accept-Encoding': 'gzip, deflate, br',
                      'Accept-Language': 'de,en-US;q=0.7,en;q=0.3',
                      'Cache-Control': 'no-cache',
                      'Connection': 'keep-alive',
                      'Cookie': 'CID=AgAAAMmF/i/pyQGNT6XeN/ol8m8=',
                      'Dnt': '1',
                      'Host': 'XXXXXXXXXXXXXXXXX.de',
                      'Pragma': 'no-cache',
                      'Sec-Fetch-Dest': 'document',
                      'Sec-Fetch-Mode': 'navigate',
                      'Sec-Fetch-Site': 'none',
                      'Sec-Fetch-User': '?1',
                      'Upgrade-Insecure-Requests': '1',
                      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; '
                                    'rv:91.0) Gecko/20100101 Firefox/91.0'},
          'json': None,
          'post': {},
          'url': {'category_id': 0}},
 'endpoint': 'categories.display',
 'id': '7b134c8dc3774ea0',
 'ip': 'XXXXXXXXXXXXXX',
 'method': 'GET',
 'referrer': None,
 'rh': 'RHDisplayCategory',
 'time': '2022-08-25T11:02:43.068566',
 'url': 'https://XXXXXXXXXXXXXXX.de/',
 'user': None,
 'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) '
               'Gecko/20100101 Firefox/91.0'}


--
Indico :: Error Report
https://XXXXXXXXXXXXXXXX.de/

did you forget to run indico db upgrade?

nope did both

indico db upgrade
indico db --all-plugins upgrade

get also response by the “indico db upgrade” about updating several stuff in the db.

i tried it twiche before post this.

Are you sure you are running the correct code version (3.2)? The users.affiliations has been removed (in favor of storing the affiliation details directly in the users table), so there should not be any code accessing it anymore!

But your error Indicates that some model still references users.affiliations in a relationship…

Try searching for users.affiliations in /opt/indico/.venv/lib/python3.9/site-packages/indico/, also confirm the indico version of your installed code (check /opt/indico/.venv/lib/python3.9/site-packages/indico/__init__.,py).

Jep here the bash history of the upgrade of the user indico:

292 source ~/.venv/bin/activate
293 export PATH=“$PATH:/usr/pgsql-13/bin”
294 export http_proxy=XXXXXXXX:80
295 export https_proxy=XXXXXXXXXXX:80
296 pip install -U indico
297 pip install -U indico-plugins
298 indico db upgrade
299 indico db --all-plugins upgrade

and the confirmation of indico 3.2 installed:

(indico) [indico@XXXXXXXXX ~]$ pip install -U indico
Requirement already satisfied: indico in ./.venv/lib/python3.9/site-packages (3.2)

and the output of the db update:
(indico) [indico@XXXXXXXXXX ~]$ indico db upgrade
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade b36825c7869e → 8993132179d3, Ensure single_choice fields have item_type
INFO [alembic.runtime.migration] Running upgrade 8993132179d3 → 84874a17eaf3, Cleanup registration fields is_billable
INFO [alembic.runtime.migration] Running upgrade 84874a17eaf3 → 3dafee32ba7d, Remove is_billable from registration fields
INFO [alembic.runtime.migration] Running upgrade 3dafee32ba7d → 82fb6c6ac6db, Add publish registrations with consent
INFO [alembic.runtime.migration] Running upgrade 82fb6c6ac6db → ef7a8b2e6737, Add access column to menu entries
INFO [alembic.runtime.migration] Running upgrade ef7a8b2e6737 → 5123f24eb41e, Add retention period to RegistrationFormItem
INFO [alembic.runtime.migration] Running upgrade 5123f24eb41e → 57696d76f9b0, Add registration visibility override
INFO [alembic.runtime.migration] Running upgrade 57696d76f9b0 → a61ce4bd7549, Add publish registrations duration to registration forms
INFO [alembic.runtime.migration] Running upgrade a61ce4bd7549 → 88eb87ee0d3e, Add retention period to RegistrationForm
INFO [alembic.runtime.migration] Running upgrade 88eb87ee0d3e → a707753d16e2, Add ‘is_purged’ flag to registration forms
INFO [alembic.runtime.migration] Running upgrade a707753d16e2 → 812aa90a3660, Add favorite events table
INFO [alembic.runtime.migration] Running upgrade 812aa90a3660 → c39db219f85a, Add predefined affiliations
INFO [alembic.runtime.migration] Running upgrade c39db219f85a → 1950e5d12ab5, Add predefined affiliations to persons
INFO [alembic.runtime.migration] Running upgrade 1950e5d12ab5 → 0c4bb2973536, Move affiliation into users table
INFO [alembic.runtime.migration] Running upgrade 0c4bb2973536 → 33c3ab67d729, Add registration created_by_manager column
INFO [alembic.runtime.migration] Running upgrade 33c3ab67d729 → b60f5c45acf7, Add require_captcha to regforms
INFO [alembic.runtime.migration] Running upgrade b60f5c45acf7 → b45847c0e62f, Add event series title pattern

That looks fine. Anyway, the SQL query clearly comes from accessing a table that no longer exists in 3.2.

Can you paste the contents of your indico/modules/users/models/affiliations.py?

i will birng the output but maybe take 1 or 2 weeks because we have some problems with our server backup infrustructure at the moment

I run in the same error.

I rerun indico db upgrade and seem to fix the problem event I’m not sure it’s the right way to solve the problem…

Weird. Sounds like you didn’t execute it before? :o

Anyway, are you sure it was really the exact same error?

I 100% sure I did excute it before (because I was updating my second server), and each time he (indico db update) do something. The first time a lot of thing ( like 20 lines of output) the second time only 1 or 2 «thing» (don’t remember exactly but very few)

Pretty sure, yes. And I find this post by copy/paste the error in google

Thanks

I just check my bash_history and

  123  source ~/.venv/bin/activate
  124  pip install -U indico
  125  pip install -U indico-plugins
  126  pip install --upgrade pip
  127  indico db upgrade
  128  indico db --all-plugins upgrade
  129  source ~/.venv/bin/activate
  130  indico db upgrade
  131  history

Yes, here the error in /opt/indico/log/indico.log

2022-08-30 16:46:01,720  ERROR    3ee39f5a9f134804  -       indico.flask              (psycopg2.errors.UndefinedTable) relation "users.affiliations" does not exist
LINE 2: ...d = categories.principals.user_id LEFT OUTER JOIN users.affi...
                                                             ^

[SQL: SELECT categories.principals.mp_group_provider AS categories_principals_mp_group_provider, categories.principals.mp_group_name AS categories_principals_mp_group_name, categories.princip
als.read_access AS categories_principals_read_access, categories.principals.full_access AS categories_principals_full_access, categories.principals.permissions AS categories_principals_permis
sions, categories.principals.id AS categories_principals_id, categories.principals.category_id AS categories_principals_category_id, categories.principals.type AS categories_principals_type, 
categories.principals.user_id AS categories_principals_user_id, categories.principals.local_group_id AS categories_principals_local_group_id, categories.principals.ip_network_group_id AS cate
gories_principals_ip_network_group_id, categories.principals.category_role_id AS categories_principals_category_role_id, users_1.title AS users_1_title, affiliations_1.id AS affiliations_1_id
, affiliations_1.user_id AS affiliations_1_user_id, affiliations_1.name AS affiliations_1_name, emails_1.id AS emails_1_id, emails_1.user_id AS emails_1_user_id, emails_1.email AS emails_1_em
ail, emails_1.is_primary AS emails_1_is_primary, emails_1.is_user_deleted AS emails_1_is_user_deleted, users_1.id AS users_1_id, users_1.first_name AS users_1_first_name, users_1.last_name AS
 users_1_last_name, users_1.phone AS users_1_phone, users_1.address AS users_1_address, users_1.merged_into_id AS users_1_merged_into_id, users_1.is_system AS users_1_is_system, users_1.is_ad
min AS users_1_is_admin, users_1.is_blocked AS users_1_is_blocked, users_1.is_pending AS users_1_is_pending, users_1.is_deleted AS users_1_is_deleted, users_1.signing_secret AS users_1_signin
g_secret, users_1.picture_metadata AS users_1_picture_metadata, users_1.picture_source AS users_1_picture_source, groups_1.id AS groups_1_id, groups_1.name AS groups_1_name, ip_networks_1.gro
up_id AS ip_networks_1_group_id, ip_networks_1.network AS ip_networks_1_network, ip_network_groups_1.id AS ip_network_groups_1_id, ip_network_groups_1.name AS ip_network_groups_1_name, ip_net
work_groups_1.description AS ip_network_groups_1_description, ip_network_groups_1.hidden AS ip_network_groups_1_hidden, ip_network_groups_1.attachment_access_override AS ip_network_groups_1_a
ttachment_access_override, roles_1.id AS roles_1_id, roles_1.category_id AS roles_1_category_id, roles_1.name AS roles_1_name, roles_1.code AS roles_1_code, roles_1.color AS roles_1_color 
FROM categories.principals LEFT OUTER JOIN users.users AS users_1 ON users_1.id = categories.principals.user_id LEFT OUTER JOIN users.affiliations AS affiliations_1 ON users_1.id = affiliatio
ns_1.user_id LEFT OUTER JOIN users.emails AS emails_1 ON users_1.id = emails_1.user_id AND emails_1.is_primary LEFT OUTER JOIN users.groups AS groups_1 ON groups_1.id = categories.principals.
local_group_id LEFT OUTER JOIN indico.ip_network_groups AS ip_network_groups_1 ON ip_network_groups_1.id = categories.principals.ip_network_group_id LEFT OUTER JOIN indico.ip_networks AS ip_n
etworks_1 ON ip_network_groups_1.id = ip_networks_1.group_id LEFT OUTER JOIN categories.roles AS roles_1 ON roles_1.id = categories.principals.category_role_id 
WHERE %(param_1)s = categories.principals.category_id]
[parameters: {'param_1': 0}]
(Background on this error at: https://sqlalche.me/e/14/f405)
Traceback (most recent call last):
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
    )
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedTable: relation "users.affiliations" does not exist
LINE 2: ...d = categories.principals.user_id LEFT OUTER JOIN users.affi...
                                                             ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask/app.py", line 1516, in full_dispatch_request
    if rv is None:
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask/app.py", line 1502, in dispatch_request
    # otherwise dispatch to the handler for that endpoint
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/flask/util.py", line 79, in wrapper
    return obj().process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/rh.py", line 291, in process
    handle_sqlalchemy_database_error()  # this will re-raise an exception
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/rh.py", line 281, in process
    res = self._do_process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/rh.py", line 252, in _do_process
    rv = self._process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/categories/controllers/display.py", line 233, in _process
    children_strategy.load_only('id')
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/categories/controllers/util.py", line 144, in get_category_view_params
    managers = sorted(category.get_manager_list(), key=attrgetter('principal_type.name', 'name'))
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/core/db/sqlalchemy/protection.py", line 500, in get_manager_list
    for x in self.acl_entries
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 481, in __get__
    )
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 941, in get
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 977, in _fire_loader_callables
    elif self.callable_:
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 911, in _load_for_state
    return self._emit_lazyload(
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 1047, in _emit_lazyload
    result = session.execute(
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1692, in execute
    orm_exec_state._starting_event_idx = idx
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1614, in _execute_20
    (
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
    d.pop("_is_clone_of", None)
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
    self.dispatch.after_execute(
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
    statement,
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
    util.raise_(
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
    try:
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
    )
  File "/opt/indico/.venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "users.affiliations" does not exist
LINE 2: ...d = categories.principals.user_id LEFT OUTER JOIN users.affi...
                                                             ^

[SQL: SELECT categories.principals.mp_group_provider AS categories_principals_mp_group_provider, categories.principals.mp_group_name AS categories_principals_mp_group_name, categories.princip
als.read_access AS categories_principals_read_access, categories.principals.full_access AS categories_principals_full_access, categories.principals.permissions AS categories_principals_permis
sions, categories.principals.id AS categories_principals_id, categories.principals.category_id AS categories_principals_category_id, categories.principals.type AS categories_principals_type, 
categories.principals.user_id AS categories_principals_user_id, categories.principals.local_group_id AS categories_principals_local_group_id, categories.principals.ip_network_group_id AS cate
gories_principals_ip_network_group_id, categories.principals.category_role_id AS categories_principals_category_role_id, users_1.title AS users_1_title, affiliations_1.id AS affiliations_1_id, affiliations_1.user_id AS affiliations_1_user_id, affiliations_1.name AS affiliations_1_name, emails_1.id AS emails_1_id, emails_1.user_id AS emails_1_user_id, emails_1.email AS emails_1_ema
il, emails_1.is_primary AS emails_1_is_primary, emails_1.is_user_deleted AS emails_1_is_user_deleted, users_1.id AS users_1_id, users_1.first_name AS users_1_first_name, users_1.last_name AS users_1_last_name, users_1.phone AS users_1_phone, users_1.address AS users_1_address, users_1.merged_into_id AS users_1_merged_into_id, users_1.is_system AS users_1_is_system, users_1.is_admi
n AS users_1_is_admin, users_1.is_blocked AS users_1_is_blocked, users_1.is_pending AS users_1_is_pending, users_1.is_deleted AS users_1_is_deleted, users_1.signing_secret AS users_1_signing_secret, users_1.picture_metadata AS users_1_picture_metadata, users_1.picture_source AS users_1_picture_source, groups_1.id AS groups_1_id, groups_1.name AS groups_1_name, ip_networks_1.group_
id AS ip_networks_1_group_id, ip_networks_1.network AS ip_networks_1_network, ip_network_groups_1.id AS ip_network_groups_1_id, ip_network_groups_1.name AS ip_network_groups_1_name, ip_network_groups_1.description AS ip_network_groups_1_description, ip_network_groups_1.hidden AS ip_network_groups_1_hidden, ip_network_groups_1.attachment_access_override AS ip_network_groups_1_attac
hment_access_override, roles_1.id AS roles_1_id, roles_1.category_id AS roles_1_category_id, roles_1.name AS roles_1_name, roles_1.code AS roles_1_code, roles_1.color AS roles_1_color 
FROM categories.principals LEFT OUTER JOIN users.users AS users_1 ON users_1.id = categories.principals.user_id LEFT OUTER JOIN users.affiliations AS affiliations_1 ON users_1.id = affiliations_1.user_id LEFT OUTER JOIN users.emails AS emails_1 ON users_1.id = emails_1.user_id AND emails_1.is_primary LEFT OUTER JOIN users.groups AS groups_1 ON groups_1.id = categories.principals.l
ocal_group_id LEFT OUTER JOIN indico.ip_network_groups AS ip_network_groups_1 ON ip_network_groups_1.id = categories.principals.ip_network_group_id LEFT OUTER JOIN indico.ip_networks AS ip_networks_1 ON ip_network_groups_1.id = ip_networks_1.group_id LEFT OUTER JOIN categories.roles AS roles_1 ON roles_1.id = categories.principals.category_role_id 
WHERE %(param_1)s = categories.principals.category_id]
[parameters: {'param_1': 0}]
(Background on this error at: https://sqlalche.me/e/14/f405)
2022-08-30 16:46:05,390  ERROR    44e2e0b3d1bf4659  -       indico.flask              (psycopg2.errors.UndefinedTable) relation "users.affiliations" does not exist
LINE 2: FROM users.users LEFT OUTER JOIN users.affiliations AS affil...