- changed status to duplicate
Enum type not created by create_all if only used in an ARRAY
Issue #3437
duplicate
I'm used to metadata.create_all() being very smart and creating everything as needed. I seem to have found a gap in its knowledge though: enum types that are only used in PostgreSQL ARRAY types are not created. The attached test case gives this output:
2015-05-29 14:40:08,477 INFO sqlalchemy.engine.base.Engine select version()
2015-05-29 14:40:08,477 INFO sqlalchemy.engine.base.Engine {}
2015-05-29 14:40:08,478 INFO sqlalchemy.engine.base.Engine select current_schema()
2015-05-29 14:40:08,478 INFO sqlalchemy.engine.base.Engine {}
2015-05-29 14:40:08,479 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
2015-05-29 14:40:08,479 INFO sqlalchemy.engine.base.Engine {}
2015-05-29 14:40:08,479 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2015-05-29 14:40:08,479 INFO sqlalchemy.engine.base.Engine {}
2015-05-29 14:40:08,480 INFO sqlalchemy.engine.base.Engine show standard_conforming_strings
2015-05-29 14:40:08,480 INFO sqlalchemy.engine.base.Engine {}
2015-05-29 14:40:08,481 INFO sqlalchemy.engine.base.Engine select relname from pg_class c join pg_namespace n on n.oid=c.relnamespace where pg_catalog.pg_table_is_visible(c.oid) and relname=%(name)s
2015-05-29 14:40:08,481 INFO sqlalchemy.engine.base.Engine {'name': 'pizza'}
2015-05-29 14:40:08,482 INFO sqlalchemy.engine.base.Engine
CREATE TABLE pizza (
id SERIAL NOT NULL,
toppings topping[],
PRIMARY KEY (id)
)
2015-05-29 14:40:08,482 INFO sqlalchemy.engine.base.Engine {}
2015-05-29 14:40:08,483 INFO sqlalchemy.engine.base.Engine ROLLBACK
Traceback (most recent call last):
File "/Users/wichert/Jzoo/backend/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
context)
File "/Users/wichert/Jzoo/backend/lib/python3.4/site-packages/sqlalchemy/engine/default.py", line 442, in do_execute
cursor.execute(statement, parameters)
psycopg2.ProgrammingError: type "topping[]" does not exist
LINE 4: toppings topping[],
Comments (2)
-
repo owner -
repo owner see the workaround in
#2729.ENUM has so many issues across SQLA / Alembic i am waiting for all the issues stop being reported and eventually I'll do a focused sweep of the whole thing.
- Log in to comment
Duplicate of
#2729.