2
나는 postgres에 enum을 가지고 있습니다.Postgres ENUM을 제거 할 수 없습니다
sa.Column('state', postgresql.ENUM(u'ACTIVE', u'STOPPED', u'FAILED', name='ProcessState'), nullable=True),
내가 그것을 제거 할 수 있지만, 또한 존재할 것 같지 않습니다 : 그것은과 같이 SQL 연금술을 통해 정의 된
database=# select NULL :: ProcessState;
ERROR: type "processstate" does not exist
LINE 1: select NULL :: ProcessState
^
database=# SELECT n.nspname AS "schema", t.typname
, string_agg(e.enumlabel, '|' ORDER BY e.enumsortorder) AS enum_labels
FROM pg_catalog.pg_type t
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
JOIN pg_catalog.pg_enum e ON t.oid = e.enumtypid
GROUP BY 1,2;
schema | typname | enum_labels
--------+-----------+-----------------------
public | ProcessState | ACTIVE|STOPPED|FAILED
(1 row)
database=# drop type public.ProcessState;
ERROR: type "public.processstate" does not exist
database=# drop type ProcessState;
ERROR: type "processstate" does not exist
나는 손실에 있어요. 그것은 존재하고 동시에 존재하지 않는 것, 나는 그것을 제거하거나 다시 추가 할 수 없습니다. SQL Alchemy를 다시 추가하면 오류가 발생합니다.
File "python2.7/site-packages/sqlalchemy/engine/default.py", line 462, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) type "ProcessState" already exists
[SQL: 'CREATE TYPE "ProcessState" AS ENUM (\'ACTIVE\', \'STOPPED\', \'FAILED\')']
어떤 아이디어가 진행되고 있습니까? 어떤 아이디어가 이것을 고치는 방법? 안정적으로이 유형을 추가하고 삭제할 수 있기를 원합니다 (전체 데이터베이스를 삭제하지 않고).
혼합 된 경우 식별자가 인용이 필요합니다. –
[PostgreSQL 열 이름은 대소 문자를 구별합니까?] 가능한 복제본 (https://stackoverflow.com/questions/20878932/are-postgresql-column-names-case-sensitive) –