#25 Nouveaux champs

Open
opened 7 years ago by Sacha · 7 comments
Sacha commented 7 years ago

Pouvez-vous ajouter les champs suivants à DB pour chaque FAI affichés si renseignés:

  • Numéro ASN
  • Code ARCEP
  • Date de dernière mise à jour db (date)
  • Nombre adhérents xDSL (nombre)
  • Nombre adhérents tunnel chiffré/VPN (nombre)
  • Nombre adhérents radio (nombre)
  • Nombre adhérents fibre (nombre)
  • Url des status (url)
  • Full IPv6 (oui/non) [1]
  • Participe au Ring NL-Nog (si ASN) (oui/non) [2]
  • Participe à la Birque Internet (oui/non)
  • Services fournis (liste de champs texte)

[1] https://www.ffdn.org/wiki/doku.php?id=travaux:ipv6_ffdn [2] https://ring.nlnog.net

Pouvez-vous ajouter les champs suivants à DB pour chaque FAI affichés si renseignés: - Numéro ASN - Code ARCEP - Date de dernière mise à jour db (date) - Nombre adhérents xDSL (nombre) - Nombre adhérents tunnel chiffré/VPN (nombre) - Nombre adhérents radio (nombre) - Nombre adhérents fibre (nombre) - Url des status (url) - Full IPv6 (oui/non) [1] - Participe au Ring NL-Nog (si ASN) (oui/non) [2] - Participe à la Birque Internet (oui/non) - Services fournis (liste de champs texte) [1] https://www.ffdn.org/wiki/doku.php?id=travaux:ipv6_ffdn [2] https://ring.nlnog.net
adrien commented 6 years ago

J'ajouterais à URL des statuts : URL RI / wiki.

J'ajouterais à URL des statuts : URL RI / wiki.
pitchum commented 6 years ago
Collaborator

J'ai déjà ajouté tous ces champs dans la spec isp-format : https://code.ffdn.org/FFDN/isp-format/commit/1878ecdd0dc717a5a3958ac033a0b00d398870e3. Reste maintenant à les implémenter correctement dans ffdn-db...

Il faut donc notamment modifier le formulaire de saisie manuelle (le JSON c'est trop fort pour moi), et les bouts de HTML qui affichent le nombre d'abonnés sans distinction de service (dsl, vpn, wifi).

J'ai déjà ajouté tous ces champs dans la spec isp-format : https://code.ffdn.org/FFDN/isp-format/commit/1878ecdd0dc717a5a3958ac033a0b00d398870e3. Reste maintenant à les implémenter correctement dans ffdn-db... Il faut donc notamment modifier le formulaire de saisie manuelle (le JSON c'est trop fort pour moi), et les bouts de HTML qui affichent le nombre d'abonnés sans distinction de service (dsl, vpn, wifi).

Salut @pitchum @Gu1 @bram,

Il reste quoi à faire là dessus?

Est-ce que les champs doivent être ajoutés dans le modèle? Si oui, comment est-ce qu'on migre la base de données (j'ai pas vu de migrations dans le repo, mais j'ai peut être mal cherché).

Comment vous testez que vous n'avez rien cassé en général? J'ai pas vu de tests dans ce repo, vous avez une suite d'intégration qui traine quelque part?

Salut @pitchum @Gu1 @bram, Il reste quoi à faire là dessus? Est-ce que les champs doivent être ajoutés dans le modèle? Si oui, comment est-ce qu'on migre la base de données (j'ai pas vu de migrations dans le repo, mais j'ai peut être mal cherché). Comment vous testez que vous n'avez rien cassé en général? J'ai pas vu de tests dans ce repo, vous avez une suite d'intégration qui traine quelque part?
pitchum commented 6 years ago
Collaborator

À priori pas besoin d'ajouter de champs dans le modèle car le JSON est stocké tel quel dans la colonne isp.json. Il faut juste adapter l'appli pour supporter les 2 formats JSON.

À ma connaissance il n'y a pas de scripts de migration de BDD ni de tests automatisés. Tout reste à faire.

Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète. Ce n'est pas forcément insurmontable car la base de code n'est pas énorme mais il faut quelqu'un pour s'en occuper et j'ai personnellement peu de temps dispo. Une des motivations pour une réécriture complète c'est que le code ne peut pas passer à python3 à cause d'une dépendance sur geoalchemy (et geoalchemy2 n'est plus du tout compatible avec sqlite). Et du peu que j'ai vu je ne suis pas certain qu'on utilise vraiment la force geoalchemy, on devrait pouvoir utiliser sqlalchemy tout seul.

À priori pas besoin d'ajouter de champs dans le modèle car le JSON est stocké tel quel dans la colonne `isp.json`. Il faut juste adapter l'appli pour supporter les 2 formats JSON. À ma connaissance il n'y a pas de scripts de migration de BDD ni de tests automatisés. Tout reste à faire. Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète. Ce n'est pas forcément insurmontable car la base de code n'est pas énorme mais il faut quelqu'un pour s'en occuper et j'ai personnellement peu de temps dispo. Une des motivations pour une réécriture complète c'est que le code ne peut pas passer à python3 à cause d'une dépendance sur geoalchemy (et geoalchemy2 n'est plus du tout compatible avec sqlite). Et du peu que j'ai vu je ne suis pas certain qu'on utilise vraiment la force geoalchemy, on devrait pouvoir utiliser sqlalchemy tout seul.

Merci pour tes réponses.

le JSON est stocké tel quel dans la colonne isp.json

facepalm, j'ai survolé ça à tord :)

ni de tests automatisés

Entre temps j'ai vu ça: https://code.ffdn.org/FFDN/ffdn-db/src/master/test_ffdnispdb.py

Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète.

Je ne suis également pas candidat ><.

Ok, je vais me mettre sur ça. Je suis un peu chargé en ce moment, n'attendez pas une PR dans la journée mais ça arrive :)

Merci pour tes réponses. > le JSON est stocké tel quel dans la colonne isp.json **facepalm**, j'ai survolé ça à tord :) > ni de tests automatisés Entre temps j'ai vu ça: https://code.ffdn.org/FFDN/ffdn-db/src/master/test_ffdnispdb.py > Honnêtement, je pense que l'appli mériterait peut-être une réécriture complète. Je ne suis également pas candidat ><. Ok, je vais me mettre sur ça. Je suis un peu chargé en ce moment, n'attendez pas une PR dans la journée mais ça arrive :)

Salut,

Je suis en train de bosser sur ça ici: https://code.ffdn.org/Ninjatrappeur/ffdn-db/src/nin-add-new-fields

J'ai un peu avancé, j'en suis à la rédaction de quelques tests unitaires là.

Je rencontre un problème pour lequel j'aurais besoin d'un peu d'aide.

Je n'arrive pas à faire tourner les tests unitaires existants ni sur ma branche ni sur le master actuel.

Il semble que lorsque on crée la base de données depuis ces tests, on tente de VACUUM des tables à un moment donné, ce qui déclenche logiquement une erreur SQLite.

Est-ce un problème connu? Suis-je le seul à avoir ce soucis (ie. ça vient de mon setup)?

Je me permet de poster ce message à l'aide dans l'espoir que quelqu'un ait une réponse directe avant de partir dans un git bisect des enfers :)

python manage.py test
EEEEEE...
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 126, in setUp
    super(TestAPI, self).setUp()
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()

======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 126, in setUp
    super(TestAPI, self).setUp()
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()

======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 126, in setUp
    super(TestAPI, self).setUp()
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()

======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 126, in setUp
    super(TestAPI, self).setUp()
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()

======================================================================
ERROR: test_index (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()

======================================================================
ERROR: test_projectform (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' ()

----------------------------------------------------------------------
Ran 9 tests in 0.341s

FAILED (errors=6)
root@f1c8523e5ed0:/ffdn# python manage.py test
EEEEEE...
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 126, in setUp
    super(TestAPI, self).setUp()
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()

======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 126, in setUp
    super(TestAPI, self).setUp()
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()

======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 126, in setUp
    super(TestAPI, self).setUp()
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()

======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 126, in setUp
    super(TestAPI, self).setUp()
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()

======================================================================
ERROR: test_index (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()

======================================================================
ERROR: test_projectform (test_ffdnispdb.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 89, in setUp
    db.create_all()
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata
    self.traverse_single(table, create_ok=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single
    return meth(obj, **kw)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table
    _ddl_runner=self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create
    self('after-create', target, connection)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__
    spatial_dialect.handle_ddl_after_create(bind, table, c)
  File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create
    bind.execute("VACUUM %s" % table.name)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' ()

----------------------------------------------------------------------
Ran 9 tests in 0.336s

FAILED (errors=6)
Salut, Je suis en train de bosser sur ça ici: https://code.ffdn.org/Ninjatrappeur/ffdn-db/src/nin-add-new-fields J'ai un peu avancé, j'en suis à la rédaction de quelques tests unitaires là. Je rencontre un problème pour lequel j'aurais besoin d'un peu d'aide. Je n'arrive pas à faire tourner les tests unitaires existants ni sur ma branche ni sur le master actuel. Il semble que lorsque on crée la base de données depuis ces tests, on tente de `VACUUM` des tables à un moment donné, ce qui déclenche logiquement une erreur SQLite. Est-ce un problème connu? Suis-je le seul à avoir ce soucis (ie. ça vient de mon setup)? Je me permet de poster ce message à l'aide dans l'espoir que quelqu'un ait une réponse directe avant de partir dans un git bisect des enfers :) ``` python manage.py test EEEEEE... ====================================================================== ERROR: test_coveredarea (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 126, in setUp super(TestAPI, self).setUp() File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' () ====================================================================== ERROR: test_isp (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 126, in setUp super(TestAPI, self).setUp() File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' () ====================================================================== ERROR: test_isps (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 126, in setUp super(TestAPI, self).setUp() File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' () ====================================================================== ERROR: test_urls (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 126, in setUp super(TestAPI, self).setUp() File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' () ====================================================================== ERROR: test_index (test_ffdnispdb.TestForm) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' () ====================================================================== ERROR: test_projectform (test_ffdnispdb.TestForm) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database registered_offices 'VACUUM registered_offices' () ---------------------------------------------------------------------- Ran 9 tests in 0.341s FAILED (errors=6) root@f1c8523e5ed0:/ffdn# python manage.py test EEEEEE... ====================================================================== ERROR: test_coveredarea (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 126, in setUp super(TestAPI, self).setUp() File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' () ====================================================================== ERROR: test_isp (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 126, in setUp super(TestAPI, self).setUp() File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' () ====================================================================== ERROR: test_isps (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 126, in setUp super(TestAPI, self).setUp() File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' () ====================================================================== ERROR: test_urls (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 126, in setUp super(TestAPI, self).setUp() File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' () ====================================================================== ERROR: test_index (test_ffdnispdb.TestForm) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' () ====================================================================== ERROR: test_projectform (test_ffdnispdb.TestForm) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 89, in setUp db.create_all() File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 856, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables op(bind=self.get_engine(app, bind), tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 97, in visit_table _ddl_runner=self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 131, in after_create self('after-create', target, connection) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/geometry.py", line 119, in __call__ spatial_dialect.handle_ddl_after_create(bind, table, c) File "/usr/local/lib/python2.7/dist-packages/geoalchemy/spatialite.py", line 112, in handle_ddl_after_create bind.execute("VACUUM %s" % table.name) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) OperationalError: (OperationalError) unknown database covered_areas 'VACUUM covered_areas' () ---------------------------------------------------------------------- Ran 9 tests in 0.336s FAILED (errors=6) ```

Bon, j'ai tenté de bisect tout ça.

J'avais pour idée de prendre le dernier commit ayant touché aux tests unitaires, ab6fece2f9, afin de partir d'une base "qui marche".

Malheureusement, il semble que la libspatialite actuelle ait bien changé et soit incompatible avec celle qui était utilisée par ce commit:

python manage.py test
Traceback (most recent call last):
  File "manage.py", line 97, in <module>
    manager.run()
  File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 405, in run
    result = self.handle(sys.argv[0], sys.argv[1:])
  File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 384, in handle
    return handle(app, *positional_args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 144, in handle
    with app.test_request_context():
  File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 377, in __enter__
    self.push()
  File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 321, in push
    self.session = self.app.open_session(self.request)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 825, in open_session
    return self.session_interface.open_session(self, request)
  File "/ffdn/ffdnispdb/sessions.py", line 67, in open_session
    res=self.db.engine.execute(select([self.table.c.value], self.table.c.session_id == sid)).first()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1613, in execute
    connection = self.contextual_connect(close_with_result=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1661, in contextual_connect
    self.pool.connect(),
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 272, in connect
    return _ConnectionFairy(self).checkout()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 431, in __init__
    rec = self._connection_record = pool._do_get()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 871, in _do_get
    return self._create_connection()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 225, in _create_connection
    return _ConnectionRecord(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 323, in __init__
    pool.dispatch.connect(self.connection, self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__
    fn(*args, **kw)
  File "/ffdn/ffdnispdb/__init__.py", line 40, in connect
    sqlite.execute('select load_extension("libspatialite.so")')
sqlite3.OperationalError: /usr/lib/x86_64-linux-gnu/libspatialite.so: undefined symbol: sqlite3_spatialite_init

Ça commence à faire un rabbit hole bien profond cette histoire. Le problème à l'air de tourner autour de geoalchemy.

Il semblerait que la version de la lib qu'on utilise soit complètement obsolète (dernière release en 2013!), je pense qu'on va devoir soit passer à la V2 soit mettre toute la partie geoalchemy à la benne.

Je ne saisis toujours pas pour quelle feature cette lib nous sert vraiment d'ailleurs.

Question pour @pitchum, t'en penses quoi? On dégage la partie geoalchemy ou on met tout simplement tout à jour?

[EDIT] J'ai commencé à travailler sur un upgrade de geoalchemy vers geoalchemy2 sur cette branche: https://code.ffdn.org/Ninjatrappeur/ffdn-db/src/nin-update-geoalchemy

Bonne nouvelle: ça résout le problème de VACUUM sur lequel les tests échouaient. En revanche, quatre tests sont cassés:

python manage.py test
EEEE.....
======================================================================
ERROR: test_coveredarea (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 128, in setUp
    db.session.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
    self.transaction.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
    self._prepare_impl()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
    self.session.flush()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
    self._flush(objects)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
    flush_context.execute()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
    rec.execute(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
    uow
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
    table, insert)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')

======================================================================
ERROR: test_isp (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 128, in setUp
    db.session.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
    self.transaction.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
    self._prepare_impl()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
    self.session.flush()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
    self._flush(objects)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
    flush_context.execute()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
    rec.execute(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
    uow
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
    table, insert)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')

======================================================================
ERROR: test_isps (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 128, in setUp
    db.session.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
    self.transaction.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
    self._prepare_impl()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
    self.session.flush()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
    self._flush(objects)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
    flush_context.execute()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
    rec.execute(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
    uow
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
    table, insert)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')

======================================================================
ERROR: test_urls (test_ffdnispdb.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/ffdn/test_ffdnispdb.py", line 128, in setUp
    db.session.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit
    self.transaction.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit
    self._prepare_impl()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl
    self.session.flush()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush
    self._flush(objects)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush
    flush_context.execute()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
    rec.execute(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute
    uow
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
    table, insert)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (2, 'Middle of nowhere', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}')

----------------------------------------------------------------------
Ran 9 tests in 0.438s

FAILED (errors=4)
Traceback (most recent call last):
  File "manage.py", line 97, in <module>
    manager.run()
  File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 405, in run
    result = self.handle(sys.argv[0], sys.argv[1:])
  File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 384, in handle
    return handle(app, *positional_args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 145, in handle
    return self.run(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 386, in __exit__
    self.auto_pop(exc_value)
  File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 374, in auto_pop
    self.pop(exc)
  File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 357, in pop
    % (rv, self)
AssertionError: Popped wrong request context.  (<RequestContext 'http://localhost/' [GET] of ffdnispdb> instead of <RequestContext 'http://localhost/' [GET] of ffdnispdb>)
Bon, j'ai tenté de bisect tout ça. J'avais pour idée de prendre le dernier commit ayant touché aux tests unitaires, ab6fece2f9, afin de partir d'une base "qui marche". Malheureusement, il semble que la libspatialite actuelle ait bien changé et soit incompatible avec celle qui était utilisée par ce commit: ``` python manage.py test Traceback (most recent call last): File "manage.py", line 97, in <module> manager.run() File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 405, in run result = self.handle(sys.argv[0], sys.argv[1:]) File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 384, in handle return handle(app, *positional_args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 144, in handle with app.test_request_context(): File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 377, in __enter__ self.push() File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 321, in push self.session = self.app.open_session(self.request) File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 825, in open_session return self.session_interface.open_session(self, request) File "/ffdn/ffdnispdb/sessions.py", line 67, in open_session res=self.db.engine.execute(select([self.table.c.value], self.table.c.session_id == sid)).first() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1613, in execute connection = self.contextual_connect(close_with_result=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1661, in contextual_connect self.pool.connect(), File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 272, in connect return _ConnectionFairy(self).checkout() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 431, in __init__ rec = self._connection_record = pool._do_get() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 871, in _do_get return self._create_connection() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 225, in _create_connection return _ConnectionRecord(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 323, in __init__ pool.dispatch.connect(self.connection, self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event.py", line 409, in __call__ fn(*args, **kw) File "/ffdn/ffdnispdb/__init__.py", line 40, in connect sqlite.execute('select load_extension("libspatialite.so")') sqlite3.OperationalError: /usr/lib/x86_64-linux-gnu/libspatialite.so: undefined symbol: sqlite3_spatialite_init ``` Ça commence à faire un rabbit hole bien profond cette histoire. Le problème à l'air de tourner autour de `geoalchemy`. Il semblerait que la version de la lib qu'on utilise soit complètement obsolète (dernière release en 2013!), je pense qu'on va devoir soit passer à la V2 soit mettre toute la partie `geoalchemy` à la benne. Je ne saisis toujours pas pour quelle feature cette lib nous sert vraiment d'ailleurs. Question pour @pitchum, t'en penses quoi? On dégage la partie geoalchemy ou on met tout simplement tout à jour? [EDIT] J'ai commencé à travailler sur un upgrade de `geoalchemy` vers `geoalchemy2` sur cette branche: https://code.ffdn.org/Ninjatrappeur/ffdn-db/src/nin-update-geoalchemy Bonne nouvelle: ça résout le problème de `VACUUM` sur lequel les tests échouaient. En revanche, quatre tests sont cassés: ``` python manage.py test EEEE..... ====================================================================== ERROR: test_coveredarea (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 128, in setUp db.session.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do return getattr(self.registry(), name)(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit self.transaction.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit self._prepare_impl() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl self.session.flush() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush self._flush(objects) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush transaction.rollback(_capture_exception=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush flush_context.execute() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute rec.execute(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute uow File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj table, insert) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement compiled_sql, distilled_params File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}') ====================================================================== ERROR: test_isp (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 128, in setUp db.session.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do return getattr(self.registry(), name)(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit self.transaction.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit self._prepare_impl() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl self.session.flush() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush self._flush(objects) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush transaction.rollback(_capture_exception=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush flush_context.execute() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute rec.execute(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute uow File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj table, insert) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement compiled_sql, distilled_params File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}') ====================================================================== ERROR: test_isps (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 128, in setUp db.session.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do return getattr(self.registry(), name)(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit self.transaction.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit self._prepare_impl() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl self.session.flush() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush self._flush(objects) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush transaction.rollback(_capture_exception=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush flush_context.execute() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute rec.execute(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute uow File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj table, insert) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement compiled_sql, distilled_params File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (1, 'Some Area', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}') ====================================================================== ERROR: test_urls (test_ffdnispdb.TestAPI) ---------------------------------------------------------------------- Traceback (most recent call last): File "/ffdn/test_ffdnispdb.py", line 128, in setUp db.session.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do return getattr(self.registry(), name)(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 721, in commit self.transaction.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit self._prepare_impl() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl self.session.flush() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush self._flush(objects) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush transaction.rollback(_capture_exception=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush flush_context.execute() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute rec.execute(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute uow File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj table, insert) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 566, in _emit_insert_statements params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement compiled_sql, distilled_params File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) IntegrityError: (IntegrityError) covered_areas.area violates Geometry constraint [geom-type or SRID not allowed] u'INSERT INTO covered_areas (isp_id, name, area) VALUES (?, ?, CastToMultiPolygon(GeomFromGeoJSON(?)))' (2, 'Middle of nowhere', '{"type": "Polygon", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG:4326"}}, "coordinates": [[[0.889892578125, 48.32703913063476], [0.054931640625, 47.39834920035926], [0.142822265625, 46.837649560937464], [2.911376953125, 46.42271253466717], [4.39453125, 46.98774725646565], [4.4384765625, 48.52388120259336], [2.5927734375, 48.8936153614802], [0.889892578125, 48.32703913063476]]]}') ---------------------------------------------------------------------- Ran 9 tests in 0.438s FAILED (errors=4) Traceback (most recent call last): File "manage.py", line 97, in <module> manager.run() File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 405, in run result = self.handle(sys.argv[0], sys.argv[1:]) File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 384, in handle return handle(app, *positional_args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 145, in handle return self.run(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 386, in __exit__ self.auto_pop(exc_value) File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 374, in auto_pop self.pop(exc) File "/usr/local/lib/python2.7/dist-packages/flask/ctx.py", line 357, in pop % (rv, self) AssertionError: Popped wrong request context. (<RequestContext 'http://localhost/' [GET] of ffdnispdb> instead of <RequestContext 'http://localhost/' [GET] of ffdnispdb>) ```
Sign in to join this conversation.
No Label
bug
No Milestone
No assignee
4 Participants
Loading...
Cancel
Save
There is no content yet.