How can I solve this Flask database migration error?



I want to make a database migration in a virtual environment with flask. I did the command ‘flask db init’, so it created a ‘migrations’ directory. Now I want to make the migration with ‘flask db migrate -m "users table"’ But it gave me a huge error:

Traceback (most recent call last):
  File "/home/pieter/.local/bin/flask", line 8, in <module>
  File "/home/pieter/.local/lib/python3.8/site-packages/flask/", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  File "/home/pieter/.local/lib/python3.8/site-packages/flask/", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/pieter/.local/lib/python3.8/site-packages/flask/", line 426, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/pieter/.local/lib/python3.8/site-packages/flask_migrate/", line 91, in migrate
    _migrate(directory, message, sql, head, splice, branch_label, version_path,
  File "/home/pieter/.local/lib/python3.8/site-packages/flask_migrate/", line 96, in wrapped
    f(*args, **kwargs)
  File "/home/pieter/.local/lib/python3.8/site-packages/flask_migrate/", line 210, in migrate
    command.revision(config, message, autogenerate=True, sql=sql,
  File "/home/pieter/.local/lib/python3.8/site-packages/alembic/", line 212, in revision
  File "/home/pieter/.local/lib/python3.8/site-packages/alembic/script/", line 490, in run_env
    util.load_python_file(self.dir, "")
  File "/home/pieter/.local/lib/python3.8/site-packages/alembic/util/", line 97, in load_python_file
    module = load_module_py(module_id, path)
  File "/home/pieter/.local/lib/python3.8/site-packages/alembic/util/", line 182, in load_module_py
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "migrations/", line 25, in <module>
    str(current_app.extensions['migrate'].db.engine.url).replace('%', '%%'))
  File "/home/pieter/.local/lib/python3.8/site-packages/flask_sqlalchemy/", line 943, in engine
    return self.get_engine()
  File "/home/pieter/.local/lib/python3.8/site-packages/flask_sqlalchemy/", line 962, in get_engine
    return connector.get_engine()
  File "/home/pieter/.local/lib/python3.8/site-packages/flask_sqlalchemy/", line 555, in get_engine
    options = self.get_options(sa_url, echo)
  File "/home/pieter/.local/lib/python3.8/site-packages/flask_sqlalchemy/", line 570, in get_options
    self._sa.apply_driver_hacks(self._app, sa_url, options)
  File "/home/pieter/.local/lib/python3.8/site-packages/flask_sqlalchemy/", line 914, in apply_driver_hacks
    sa_url.database = os.path.join(app.root_path, sa_url.database)
AttributeError: can't set attribute

This is my

from app import db
from import generate_password_hash, check_password_hash

class User(db.Model):
    user_id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(128))

What does this error mean and how can I fix it?

Thank you.


The problem gets solved by uninstalling SQLAlchemy==1.4.0 and installing the previous version SQLAlchemy==1.3.23.

Answered By – Ange Uwase

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave A Reply

Your email address will not be published.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More