flask db upgrade问题:(pymysql.err.OperationalError) (1050, “Table ‘emailcaptcha‘ already exists“)解决办法

exts.py文件

# exts.py这个 文件存在的意义是为了解决循环引用的问题

# flask-sqlalchemy
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail
db = SQLAlchemy()
mail = Mail()

models.py文件

from exts import db
from datetime import datetime


# ORM模型映射成表的三步
# 1.flask db init:这步只需要执行一次
# flask db stamp head是使用Flask-Migrate和Alembic进行数据库迁移时的一个命令。
# 2.flask db migrate:识别ORM模型的改变,生产迁移脚本在migrations/versions目录下
# 3.flask db upgrade:运行迁移脚本,会多创建一个alembic_version的一个表来记录迁移脚本的版本号


class UserModel(db.Model):
    __tablename__ = "user"  # 表名为user,命名的时候最好为全部小写,否则在模型映射的时候会无法更新数据库
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(100), nullable=False, unique=True)
    join_time = db.Column(db.DateTime, default=datetime.now)


class EmailCaptchaModel(db.Model):
    __tablename__ = "emailcaptcha"  # 表名为emailcaptcha,解决办法:https://blog.csdn.net/joker_zsl/article/details/116050407?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-116050407-blog-105825964.235^v38^pc_relevant_default_base&spm=1001.2101.3001.4242.1&utm_relevant_index=3
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    email = db.Column(db.String(100), nullable=False)
    captcha = db.Column(db.String(100), nullable=False)
    used = db.Column(db.Boolean,default=False)

就是当我想在EmailCaptchaModel中添加了一个新的表used

命令行执行flask db upgrade时报错

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1050, "Table 'emailcaptcha' already exists")

最后发现是

__tablename__ = "emailcaptcha"  # 表名为emailcaptcha

这一行命名的时候最好为全部小写,否则在模型映射的时候会无法更新数据库

原先为

__tablename__ = "EmailCaptcha"  # 表名为emailcaptcha

我也是找的别人的解决办法链接在这里:

flask踩坑记录:flask_migrate迁移数据库出现 1050 “Table ‘xxxx‘ already exists“_joker_zsl的博客-CSDN博客

 希望以上会帮到遇到类似问题的你

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值