mirror of
https://github.com/YunoHost-Apps/ihatemoney_ynh.git
synced 2024-09-03 19:26:15 +02:00
Fix migrations upgrade path for MySQL
For some reason, the migration path from unmanaged db (from alembic point-of-view) to managed db, through the initial migration works well with sqlite… But not with mysql where the db system tries to re-create the existing tables. This commit is a way to detect if we are migrating from pre-alembic era and skip the first migration (which would do nothing anyway), marking it as already executed. It's quite hackish but that's the best I found so far to get it working with both MySQL and SQLite.
This commit is contained in:
parent
5084cafe6b
commit
a5579220e0
1 changed files with 15 additions and 1 deletions
|
@ -3,7 +3,7 @@ import warnings
|
|||
|
||||
from flask import Flask, g, request, session
|
||||
from flask.ext.babel import Babel
|
||||
from flask.ext.migrate import Migrate, upgrade
|
||||
from flask.ext.migrate import Migrate, upgrade, stamp
|
||||
from raven.contrib.flask import Sentry
|
||||
|
||||
from web import main, db, mail
|
||||
|
@ -15,6 +15,15 @@ from utils import minimal_round
|
|||
app = Flask(__name__)
|
||||
|
||||
|
||||
def pre_alembic_db():
|
||||
""" Checks if we are migrating from a pre-alembic ihatemoney
|
||||
"""
|
||||
con = db.engine.connect()
|
||||
tables_exist = db.engine.dialect.has_table(con, 'project')
|
||||
alembic_setup = db.engine.dialect.has_table(con, 'alembic_version')
|
||||
return tables_exist and not alembic_setup
|
||||
|
||||
|
||||
def configure():
|
||||
""" A way to (re)configure the app, specially reset the settings
|
||||
"""
|
||||
|
@ -49,6 +58,11 @@ db.app = app
|
|||
# db migrations
|
||||
migrate = Migrate(app, db)
|
||||
|
||||
if pre_alembic_db():
|
||||
with app.app_context():
|
||||
# fake the first migration
|
||||
stamp(revision='b9a10d5d63ce')
|
||||
|
||||
# auto-execute migrations on runtime
|
||||
with app.app_context():
|
||||
upgrade()
|
||||
|
|
Loading…
Reference in a new issue