Je migration des données à partir d'une base de données existante qui a de nombreuses tables avec des clés primaires définies comme:lookups Django DecimalField avec MySQL ne fonctionne pas
`id` decimal(26,0)
La colonne id contiennent des valeurs qui ressemblent à:
20080313154354198004
20081217165552136057
2008080416222952067
20060510151423191000
20060510151423191000
20070710143455874025
200806239353171091
requêtes faire comme:
Release.objects.raw("SELECT id from games_release where legacy_id = 2008050812286746069")
réussiront parfois et parfois échouer. En cas d'échec, je peux capturer la requête de db.connection.queries, la coller dans la console MySQL et la requête va aboutir. J'imagine qu'il doit avec la façon dont le type DECIMAL est géré aux différents niveaux de la pile (ORM -> DB driver -> serveur). Cela semblait comme il était pertinent, mais je n'ai pas eu de chance avec CAST() jusqu'à présent:
http://dev.mysql.com/doc/refman/5.1/en/type-conversion.html
Toute aide à rendre les requêtes fonctionner de manière fiable beaucoup apprécié.
Modifier Une pièce du puzzle que j'oublié de mentionner: Les valeurs décimales que je tente d'interroger sur sont stockés dans une table qui ont été initialement tiré de la table de l'héritage. Par exemple:
class OldModel(db.models):
id = models.DecimalField(decimal_places=0, max_digits=36)
class NewModel(db.models):
id = models.DecimalField(decimal_places=0, max_digits=36)
old = <some instance of OldModel>
new = NewModel.objects.create(id=old.id)
Ensuite, en essayant de sélectionner pour "nouveau" via objects.raw() peut échouer.
Vous devez accepter votre réponse afin que d'autres connaissent une solution a été trouvée. – Mike
Fait, merci. StackOverflow impose un temps d'attente en acceptant vos propres réponses ou je l'aurais fait plus tôt :) –