flask-migrate执行upgrade时报数据表已经存在错误:1050, "Table 'xxxx' already exists"

在使用 Flask-Migrate 进行数据库迁移时,遇到1050错误,提示数据表已存在。问题源于迁移文件生成的代码不正确,导致尝试创建已有表。通过检查配置文件发现使用了错误的数据库连接方式,修正为`flask-sqlalchemy`后,删除旧的migrations文件,重新执行迁移步骤,成功添加字段而未丢失数据。遇到类似问题时,应逐步排查并解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境背景

最近在写一个flask的web项目,数据库使用的是mysql8.0数据库,数据库的连接方式使用的是flask-sqlalchemy的映射方式。下面贴出自己的环境:
在这里插入图片描述

遇到的问题:

自己的一个用户表原来没有电话号码字段,现在要添加电话号码字段,由于不想删除原来已有的数据,所以使用flask-migrate进行数据迁移,可以动态添加字段。

下面是启动app时会创建数据表,但是有一个问题就是以后如果要重新添加字段,就要把数据库删除,再重新创建,这样子的话数据库里的数据就没有了,再实际工作中肯定是不能这样子的。

# 文件名:app.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

# 学生表orm映射
class Student(db.Model):
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    name = db.Column(db.String(32),nullable=False)


def create_app():
    app = Flask(__name__)
    app.config.from_object('app.config') //导入数据库连接配置
    db.init_app(app)

    # 由于没有入栈,在这里手动推栈创建所有的表
    with app.app_context():
        db.create_all() //将所有的model创建到数据库中去,已有的就不能会更新了
    return app

if __name__ == "__main__":
    app = create_app()
    app.run()



新建一个manager.py文件用来添加数据表新增字段。
你要安装2个插件才可以添加新字段:

  1. flask-script
  2. flask-migrate

具体的使用和安装方法自己百度一下


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值