Nous venons de changer notre base de données MySQL de MyIsam à Innodb, et nous constatons un problème étrange dans Django. Chaque fois que nous effectuons une transaction dans la base de données, les sessions existantes ne la récupèrent pas... jamais. Nous pouvons voir le nouvel enregistrement dans la base de données à partir d'un terminal mysql, mais les sessions django existantes (c'est-à-dire un shell déjà ouvert), n'enregistrent pas le changement. Par exemple :
Coquille 1 :
>>> my_obj = MyObj.objects.create(foo="bar")
>>> my_obj.pk
1
Coquille 2 (était ouverte avant ce qui précède)
>>> my_obj = MyObj.objects.filter(pk=1)
[]
Shell 3 (MySQL) :
mysql> select id from myapp_my_obj where id = 1;
id
1
Quelqu'un sait-il pourquoi cela peut se produire ?
EDIT : Pour clarifier, Shell 2 a été ouvert avant Shell 1, puis je fais la création Shell 1, puis j'essaie de visualiser l'objet que j'ai créé dans Shell 2.
EDIT2 : Le problème est que j'ai une tâche celery qui reçoit la clé primaire de l'objet qui est créé. Quand j'utilisais MyISAM, il la trouvait à chaque fois, et maintenant il lance ObjectDoesNotExist
même si je peux voir que l'objet est créé dans la base de données.