Skip to content

PGSync tries to find FK between unrelated tables. #142

Description

@namoshizun

PGSync version:
v2.1.1

Postgres version:
v11.1

Elasticsearch version:
v7.11.2

Redis version:
v5

Python version:
v3.8

Problem Description:

Using this schema, while bootstrap and pgsync commands run without issues, I am getting the following error when actually create a Tenant database record. Look like pgsync has mistakenly tried to correlate the UserRoles medium table with Role's foreign key entity District?

Error Message (if any):

Exception in thread Thread-23:
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 860, in poll_redis
    self.on_publish(payloads)
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 927, in on_publish
    self.sync_payloads(_payload)
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 829, in sync_payloads
    for doc in self._payloads(payloads):
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 645, in _payloads
    filters = self._insert(
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 339, in _insert
    foreign_keys = self.query_builder._get_foreign_keys(
  File "/usr/local/lib/python3.8/site-packages/pgsync/querybuilder.py", line 45, in _get_foreign_keys
    for key, value in get_foreign_keys(through, node_b).items():
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 961, in get_foreign_keys
    for table, columns in _get_foreign_keys(
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 920, in _get_foreign_keys
    raise ForeignKeyError(
pgsync.exc.ForeignKeyError: 'No foreign key relationship between "public.saas_api_user_roles" and "public.saas_api_district"'

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions