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 import Flask, g, request, session
|
||||||
from flask.ext.babel import Babel
|
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 raven.contrib.flask import Sentry
|
||||||
|
|
||||||
from web import main, db, mail
|
from web import main, db, mail
|
||||||
|
@ -15,6 +15,15 @@ from utils import minimal_round
|
||||||
app = Flask(__name__)
|
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():
|
def configure():
|
||||||
""" A way to (re)configure the app, specially reset the settings
|
""" A way to (re)configure the app, specially reset the settings
|
||||||
"""
|
"""
|
||||||
|
@ -49,6 +58,11 @@ db.app = app
|
||||||
# db migrations
|
# db migrations
|
||||||
migrate = Migrate(app, db)
|
migrate = Migrate(app, db)
|
||||||
|
|
||||||
|
if pre_alembic_db():
|
||||||
|
with app.app_context():
|
||||||
|
# fake the first migration
|
||||||
|
stamp(revision='b9a10d5d63ce')
|
||||||
|
|
||||||
# auto-execute migrations on runtime
|
# auto-execute migrations on runtime
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
upgrade()
|
upgrade()
|
||||||
|
|
Loading…
Reference in a new issue