Bug #22873
crash migration si un tenant n'a pas de schema dans la base
0%
Description
Cas improbable mais possible, un tenant n'a pas de schema. Quand on lance un migrate_schema, ça crashe en disant que django_migrations n'existe pas dans ... le schema public.
C'est parce que :
def run_migrations(self, schema_name, included_apps): if int(self.options.get('verbosity', 1)) >= 1: self._notice("=== Running migrate for schema %s" % schema_name) connection.set_schema(schema_name) command = MigrateCommand() command.execute(*self.args, **self.options) connection.set_schema_to_public()
Il faudrait appeler connection.set_schema avec include_public=False pour éviter qu'il lance le migrate sur public, en fallback quand le schema du tenant n'existe pas.
NB : ça va toujours planter (c'est une situation très anormale), mais le message d'erreur sera plus explicite (perdu du temps à piger l'affaire hier sur un déploiement bizarre sur la machine d'Emmanuel).
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Thomas Noël il y a environ 6 ans
- Fichier 0001-never-fallback-to-public-on-migrate_schemas-22873.patch 0001-never-fallback-to-public-on-migrate_schemas-22873.patch ajouté
- Patch proposed changé de Non à Oui
Pas trouvé de test à écrire ; mais Emmanuel va tester l'affaire d'abord sur son truc qui plantouille, et acker si c'est mieux ainsi.
Mis à jour par Emmanuel Cazenave il y a environ 6 ans
Testé, ça améliore l'erreur :
ProgrammingError: no schema has been selected
à la place de
ProgrammingError: relation "django_migrations" already exists
ack.
Mis à jour par Thomas Noël il y a environ 6 ans
- Statut changé de Nouveau à Résolu (à déployer)
commit f3a2cb269b88a16f92ad1905e664c4badfaab4be Author: Thomas NOEL <tnoel@entrouvert.com> Date: Thu Mar 29 10:41:44 2018 +0200 never fallback to public on migrate_schemas (#22873)
Mis à jour par Emmanuel Cazenave il y a environ 6 ans
- Lié à Development #22892: Conflit tests unitaires et installation multitenant ajouté
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
never fallback to public on migrate_schemas (#22873)