Skip to content

self.enums is empty, migra throwing KeyError #206

@pocin

Description

@pocin
Traceback (most recent call last):
  File "/Users/myuser/.pyenv/versions/3.10.1/bin/migra", line 8, in <module>
    sys.exit(do_command())
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/migra/command.py", line 108, in do_command
    status = run(args)
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/migra/command.py", line 79, in run
    m = Migration(ac0, ac1, schema=schema, exclude_schema=exclude_schema)
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/migra/migra.py", line 25, in __init__
    self.changes.i_from = get_inspector(
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/schemainspect/get.py", line 22, in get_inspector
    inspected = ic(c)
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/schemainspect/pg/obj.py", line 1083, in __init__
    super(PostgreSQL, self).__init__(c, include_internal)
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/schemainspect/inspector.py", line 27, in __init__
    self.load_all()
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/schemainspect/pg/obj.py", line
 1095, in load_all
    self.load_all_relations()
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/schemainspect/pg/obj.py", line 1353, in load_all_relations
    columns = [
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/schemainspect/pg/obj.py", line 1362, in <listcomp>
    enum=get_enum(c.enum_name, c.enum_schema),
  File "/Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/schemainspect/pg/obj.py", line 1351, in get_enum
    return self.enums[quoted_full_name]
KeyError: '"graphql"."column_order_direction"'

I have dropped a pdb into site-packages/schemainspect/pg/obj.py on line 1344 and self.enums is empty. Any ideas why that could be?

> /Users/myuser/.pyenv/versions/3.10.1/lib/python3.10/site-packages/schemainspect/pg/obj.py(1345)load_all_relations()
-> def get_enum(name, schema):
(Pdb) l
1340            for _, g in groupby(q, lambda x: (x.relationtype, x.schema, x.name)):
1341                clist = list(g)
1342                f = clist[0]
1343
1344                breakpoint()
1345 ->             def get_enum(name, schema):
1346                    if not name and not schema:
1347                        return None
1348
1349                    quoted_full_name = "{}.{}".format(
1350                        quoted_identifier(schema), quoted_identifier(name)
(Pdb) self.enums
OrderedDict()

I am using supabase on localhost for development.
The relevent bit of sql seems to be https://github.com/supabase/pg_graphql/blob/be162c5613cbb18d3f4796f079819e2ef0e30bd6/src/sql/cursor/impl.sql#L1=
but i am not completely sure what is going on with the schema.

Running the vanilla supabase locally in docker using supabase start
and

export PGHOST='localhost'
export PGUSER=postgres
export PGDATABASE=postgres
export PGPASSWORD=postgres
export PGPORT=54322

export DB_LOCAL_URL="postgresql://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${PGDATABASE}"

migra $DB_LOCAL_URL $DB_LOCAL_URL

to diff the same database instances. I am getting

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