背景介绍
当我在另一台电脑重新安装环境后,执行之前的项目,发现报错:
Can't import MigrateCommand from flask_migrate
解决方案
由于 flask_migrate高版本已经没有MigrateCommand ,所以此时我们该如何做数据库迁移
删除flask-script库及相关导入,因为高版本已经用不上这个
1.官方demo
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
2.设置环境变量
此时,打开命令行终端,cd到项目所在目录
# 设置环境变量,假设上面的python文件名为manager.py
set set FLASK_APP=manager.py
3.数据库迁移
依次执行如下命令
flask db init
flask db migrate -m "init"
flask db update
问题记录
1.执行如下命令时,报错:Access denied
flask db migrate -m "init"
解决方案:
报错原因是远程访问数据库没有权限。
授予远程访问数据库的权限,myuser,mypassword替换为自己的数据库用户名和密码
# 允许所有ip
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
限制指定ip可访问,授予一个名为 ‘myuser’ 的用户从 IP 地址为 ‘192.168.9.1’ 的主机连接到 MySQL 数据库服务器
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.9.1' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
2.数据库迁移时,报错Unkown dataase
解决方案
问题原因是数据库中没有myapp这个库,需要先手动创建
create database myapp;