2
私はポストグルにenumを持っています。私はそれを削除することはできませんが、それも存在するように見えるdoes notのPostgres ENUMを取り除くことができません
sa.Column('state', postgresql.ENUM(u'ACTIVE', u'STOPPED', u'FAILED', name='ProcessState'), nullable=True),
:
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の錬金術を経由して定義されました。それは存在しているようであり、同時に存在しないと私はそれを削除するか、またはそれを再追加することはできません。 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) –