2017-12-05 2 views
1

Migration begann ich heute Flask-Migrate mit und installiert es auf einem Testprojekt. i folgende Störung erhalte jedoch:CommandError: Kann nicht Revision durch ‚...‘ identifiziert orten bei der Verwendung von Flask-Migrate

alembic.util.exc.CommandError: Can't locate revision identified by 'e39d16e62810'

Schritte zum Reproduzieren:

  1. run "Python create_db.py"
  2. run "Kolben db init"
  3. Spalte „Name zu Entry-Modell
  4. laufen "Kolben db migrieren"

EDIT: Nach dem Entfernen migrations Verzeichnis und die Wiederholung des Prozesses bekomme ich den gleichen Fehler nach dem Ausführen von "Flask db migrieren". Ich habe auch versucht eine manage.py Datei mit Kolben-Skript -> gleiche Problem

Fehler:

(venv_mentz) H:\Flask-API-Test>python manage.py db migrate 
INFO [alembic.runtime.migration] Context impl SQLiteImpl. 
INFO [alembic.runtime.migration] Will assume non-transactional DDL. 
Traceback (most recent call last): 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\base.py", line 143, in _catch_revision_errors 
    yield 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\base.py", line 206, in get_revisions 
    return self.revision_map.get_revisions(id_) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 299, in get_revisions 
    return sum([self.get_revisions(id_elem) for id_elem in id_],()) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 299, in <listcomp> 
    return sum([self.get_revisions(id_elem) for id_elem in id_],()) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 304, in get_revisions 
    for rev_id in resolved_id) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 304, in <genexpr> 
    for rev_id in resolved_id) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 362, in _revision_for_ident 
    resolved_id) 
alembic.script.revision.ResolutionError: No such revision or branch 'e39d16e62810' 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    manager.run() 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\flask_script\__init__.py", line 417, in run 
    result = self.handle(argv[0], argv[1:]) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\flask_script\__init__.py", line 386, in handle 
    res = handle(*args, **config) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\flask_script\commands.py", line 216, in __call__ 
    return self.run(*args, **kwargs) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\flask_migrate\__init__.py", line 197, in migrate 
    version_path=version_path, rev_id=rev_id) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\command.py", line 176, in revision 
    script_directory.run_env() 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\base.py", line 425, in run_env 
    util.load_python_file(self.dir, 'env.py') 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\util\pyfiles.py", line 81, in load_python_file 
    module = load_module_py(module_id, path) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\util\compat.py", line 83, in load_module_py 
    spec.loader.exec_module(module) 
    File "<frozen importlib._bootstrap_external>", line 678, in exec_module 
    File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed 
    File "migrations\env.py", line 87, in <module> 
    run_migrations_online() 
    File "migrations\env.py", line 80, in run_migrations_online 
    context.run_migrations() 
    File "<string>", line 8, in run_migrations 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\runtime\environment.py", line 836, in run_migrations 
    self.get_context().run_migrations(**kw) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\runtime\migration.py", line 321, in run_migrations 
    for step in self._migrations_fn(heads, self): 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\command.py", line 156, in retrieve_migrations 
    revision_context.run_autogenerate(rev, context) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\autogenerate\api.py", line 415, in run_autogenerate 
    self._run_environment(rev, migration_context, True) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\autogenerate\api.py", line 425, in _run_environment 
    if set(self.script_directory.get_revisions(rev)) != \ 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\base.py", line 206, in get_revisions 
    return self.revision_map.get_revisions(id_) 
    File "c:\users\marschall\appdata\local\programs\python\python36-32\Lib\contextlib.py", line 100, in __exit__ 
    self.gen.throw(type, value, traceback) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\base.py", line 174, in _catch_revision_errors 
    compat.raise_from_cause(util.CommandError(resolution)) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\util\compat.py", line 194, in raise_from_cause 
    reraise(type(exception), exception, tb=exc_tb, cause=exc_value) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\util\compat.py", line 187, in reraise 
    raise value.with_traceback(tb) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\base.py", line 143, in _catch_revision_errors 
    yield 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\base.py", line 206, in get_revisions 
    return self.revision_map.get_revisions(id_) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 299, in get_revisions 
    return sum([self.get_revisions(id_elem) for id_elem in id_],()) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 299, in <listcomp> 
    return sum([self.get_revisions(id_elem) for id_elem in id_],()) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 304, in get_revisions 
    for rev_id in resolved_id) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 304, in <genexpr> 
    for rev_id in resolved_id) 
    File "H:\Flask-API-Test\venv_mentz\lib\site-packages\alembic\script\revision.py", line 362, in _revision_for_ident 
    resolved_id) 
alembic.util.exc.CommandError: Can't locate revision identified by 'e39d16e62810' 

sieht Meine Dateistruktur wie folgt aus:

app 
-- views 
----- __init__.py 
----- main.py 
-- __init__.py 
-- config.py 
-- models.py 
instance 
-- __init__.py 
-- config.py 
create_db.py 
dev.db 
run.py 

Meine app factory:

Mein run.py:

""" This script runs a the app with the given configuration. """ 

from app import create_app 

# Configuration used to run the app 
config_name = 'dev' 

# Creating the app by using the required configuration 
app = create_app(config_name) 

if __name__ == '__main__': 
    app.run() 

Und meine create_db.py Datei die Datenbank mit models.py zu erstellen:

""" This script creates the database defined in app.models. """ 

from app import create_app 

app = create_app('dev') 
from app.models import db 

# Telling SQLAlchemy what app should be used as the database model 
with app.app_context(): 
    db.create_all() 

Das ist mein models.py :

from flask_sqlalchemy import SQLAlchemy 

db = SQLAlchemy() 

class Entry(db.Model): 
    __tablename__ = 'Entries' 
    layer_id = db.Column(db.Integer, primary_key=True) 

    def __repr__(self): 
     return "ID: {}; text: {}".format(self.layer_id, self.text) 

EDIT: manage.py:

from flask_script import Manager 
from flask_migrate import Migrate, MigrateCommand 
from app import create_app 
from app import models 
from app.models import db 

app = create_app('dev') 
migrate = Migrate(app, db) 
manager = Manager(app) 

manager.add_command('db', MigrateCommand) 

if __name__ == '__main__': 
    manager.run() 
+0

können Sie überprüfen, ob Sie eine Migration Ordner in Ihrem Anwendungsverzeichnis haben? –

+0

Es gibt/gab zu Beginn keinen Migrationsordner. Es wird jedoch erstellt, wenn "flask db init" ausgeführt wird. –

+1

Löschen Sie das Verzeichnis "migrations" und wiederholen Sie den gesamten Vorgang erneut. Wenn Sie den Fehler erhalten, fügen Sie bitte den Befehl, der Ihnen den Fehler gab, zusammen mit der vollständigen Ausgabe zu Ihrer Frage hinzu. – Miguel

Antwort

0

fand ich die Lösung. Mein Fehler .... der Pfad zur Datenbank war falsch. Trotzdem Danke.

Verwandte Themen