Flask(数据库)数据库迁移中枚举类型的 psycopg2.ProgrammingError

2024-04-16

在 Flask 应用程序的 postgres 数据库上运行迁移时,我在 Enum 类型上收到以下 psycopg2 错误:

INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> 8753d3c9dbd1, empty message
Traceback (most recent call last):
  File "/home/jul/.miniconda3/envs/audiolabeling/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
    context)
  File "/home/jul/.miniconda3/envs/audiolabeling/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
    cursor.execute(statement, parameters)
psycopg2.ProgrammingError: type "feedbacktype" already exists

我尝试删除 alembic_version 表和迁移文件夹并重新运行flask db init/migrate/upgrade,但没有成功。

我必须完全删除数据库才能解决这个问题。

当类型已经存在时,有什么方法可以不重新创建类型吗?

模型.py

from audiolabeling import db
import enum


class FeedBackType(enum.Enum):
    NONE = "none"
    HIDDENIMAGE = "hiddenImage"

class Task(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    feedback = db.Column(db.Enum(FeedBackType))

    def __repr__(self):
        return '<id {}>'.format(self.id)

答案可能已经很晚了,但仍会尝试将其发布给将来寻找此问题的其他人。 (像我以前一样)

还有一个create_type夸格为postgresql.ENUM。用于在 alembic 迁移脚本中设置枚举类型列的架构。

这是我的新列定义的样子。 (它使用现有的现有枚举)


sa.Column('ActionType', postgresql.ENUM('Primary', 'Secondary', name='actiontype', create_type=False), nullable=True),

现在,这将使用现有的枚举作为新列,而不创建新的枚举。

我在用着SQLAlchemy==1.1.1 and alembic==0.8.8在我的需求文件中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask(数据库)数据库迁移中枚举类型的 psycopg2.ProgrammingError 的相关文章

随机推荐

  • 使用不同数据集的 UNION ORDER BY (T-SQL)

    我有一个疑问UNION的两个有点相似的数据集 但它们都有一些在另一个数据集中不存在的列 即 这些列在结果中具有 NULL 值 UNION 问题是 我需要ORDER使用仅存在于一个或另一组中的那些列来生成结果数据 以便以软件端友好的格式获取数
  • GAE 数据存储游标是否永久且持久?

    这么说是否正确com google appengine api datastore Cursor只是将索引位置存储到 GAE 数据存储索引中 游标耐用吗 也就是说 我可以永久存储游标并一次又一次地重复使用它 并确定如果它指向索引中的第 50
  • 是否可以为 Azure 辅助角色设置机器密钥

    我在 Azure 辅助角色中托管了一个 Owin WebAPI 服务器 Owin Authentication中间件似乎使用MachineKey来加密和生成Token 当我只有一个该角色的实例时 这非常有效 但是一旦我想使用多个实例 每个实
  • HTML5 替代基于闪存的 ZeroClipboard 来安全地将数据复制到剪贴板?

    随着 Flash 在许多环境 iPhone Android IE10 等 中逐渐淘汰 是否有任何浏览器即将推出新的解决方案 允许在不安装 Flash 的情况下将信息安全复制到剪贴板 我一直在使用零剪贴板 https github com j
  • TextRenderInfo 在 iTextSharp 中如何工作?

    我从网上得到了一些代码 他们为我提供了字体大小 我不明白 TextRenderInfo 如何读取文本 我尝试使用 renderInfo GetText 它给出随机数量的字符 有时是 3 个字符 有时是 2 个字符或更多或更少 我需要知道 r
  • 对 .NET Core 中的 web.config 感到困惑

    关于 web config 和 NET Core 有很多相互矛盾的说法 Places saying it s gone https dotnetcore show episode 10 configuration in net core h
  • 从另一个 Activity 返回时 SearchView 获得焦点并打开键盘

    当我从另一个活动返回主活动时 searchView 获得焦点并且键盘打开 我设法使用以下方法阻止键盘打开 getWindow setSoftInputMode WindowManager LayoutParams SOFT INPUT ST
  • Pandas group-by 累加和的比例从0开始

    我有以下 pandas 数据框 没有最后 2 列 name day show in appointment previous missed appointments proportion previous missed 0 Jack 202
  • 从父级 React 刷新子级状态

    我有一个包含一些数据的表 表中的每个元素都是一个 React 类组件 它看起来像这样 我想要的只是有一个用于 检查所有 功能的复选框 左上角复选框 问题是我不知道如何解决这个问题 因为props and state 我在单元素组件中有类似的
  • 如何向变量添加条件 - GAMS

    在我尝试构建的模型中 我有一个变量定义为 Variables x i j number of motors produced in month i to be delivered in month j 在该变量中 j 必须始终等于或大于 i
  • 无法读取更新的 AnyLogic DB 值

    我目前正在使用 AnyLogic 数据库来存储已用停车容量 我编写了一个函数来读取数据库并为每个存储的集装箱或拖车分配一个 id 然后 使用 UPDATE 查询来更新数组 数据库读取是使用数据库查询工具指定的 selectfrom 执行的
  • 如何将类添加到开槽元素?

    In my my dropdown模板中的组件 我有这个
  • Rails 中的奇怪错误 - 缺少助手

    我不确定 但这可能与崩溃的计算机有关 重新启动后 崩溃后 我收到丢失助手错误 其中助手名称错误 切换分支对结果没有影响 错误是 缺少帮助程序文件 helpers users xxxx sites xxxx app helpers accou
  • 如何在关闭 rowselect 的情况下为 DBGrid 中的整行着色?

    RowSelect 破坏了 OnCellClick 的功能 因此我需要关闭 RowSelect 那么如何通过突出显示当前行的所有单元格来模拟行选择的外观呢 这对我有用 dgRowSelect False and dgMultiSelect
  • 带有 Joomla 的 Intranet 网站?

    我的公司想在局域网上建立一个小型的内联网门户 我们最多大约有 100 个用户 我正在考虑在带有 XAMPP 的 Windows 服务器环境上使用 Joomla 为了安全起见 XAMPP 为大约 50 到 100 个用户提供服务是否有效 它有
  • 从视频获取MediaStreamTrack(音频)

    我想在从画布录制的同时从视频元素录制音频 我有 var stream canvas captureStream 29 现在我将视频的audioTrack 添加到流中 var vStream video captureStream strea
  • Flask 函数 url_for 不适用于 Bluehost 上的子域部署

    我在 Bluehost 根目录下的子目录中部署了一个非常简单的 Flask 应用程序 名为 app 希望 example com 指向主页 example com app 指向我的 Flask 应用程序 实际上 当脚本 index py 如
  • 使用 POST 从 iOS 将数组传递给 PHP

    因此 我浏览了无数类似的问题 但没有一个回答我正在寻找的问题或以完整的方式回答它 所以希望你们都能帮助我 我需要使用 POST 或任何可以正常工作的方式将 RestaurantID 数组从 iOS 传递到 PHP 文件 我知道 ASIHTT
  • android studio 无法构建

    失败 构建失败并出现异常 出了什么问题 任务 app preDexDebug 执行失败 java io IOException Cannot run program C Users SETIAWAN AppData Local Androi
  • Flask(数据库)数据库迁移中枚举类型的 psycopg2.ProgrammingError

    在 Flask 应用程序的 postgres 数据库上运行迁移时 我在 Enum 类型上收到以下 psycopg2 错误 INFO alembic runtime migration Context impl PostgresqlImpl