Opened 7 years ago
Closed 7 years ago
#29845 closed Bug (fixed)
Casting to DecimalField causes MySQL/MariaDB SQL syntax error
| Reported by: | Ronny Vedrilla | Owned by: | Mariusz Felisiak |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 1.11 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Ready for checkin | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
When I cast a FloatField to Decimal, I get an error from MySQL.
Seen in django 1.11.16 on MariaDB.
Model:
class MyModel(models.Model):
floatfield = models.FloatField()
decimalfield = models.DecimalField(decimal_places=2, max_digits=12)
Query:
MyModel.objects.all().annotate(
floatfield_decimal=Cast('floatfield', DecimalField(max_digits=8, decimal_places=2))).aggregate(
revenue=Sum(F('floatfield_decimal') * F('decimalfield'))
)['revenue']
Then I see this error:
{ProgrammingError}(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'numeric(8, 2)) AS `floatfield_decimal`, `myclass`.`decimalfield' at line 1")
I guess the numeric should be Decimal... It's not possible to examine the query further from the debugger.
Change History (7)
comment:1 by , 7 years ago
| Description: | modified (diff) |
|---|---|
| Summary: | django orm cast float field to decimal causes MySQL error → Casting FloatField to DecimalField causes MySQL/MariaDB SQL syntax error |
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 7 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:3 by , 7 years ago
| Summary: | Casting FloatField to DecimalField causes MySQL/MariaDB SQL syntax error → Casting to DecimalField causes MySQL/MariaDB SQL syntax error |
|---|
comment:6 by , 7 years ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
Note:
See TracTickets
for help on using tickets.
Reproduced on master at 910548634a23f7a3346158e93de0ab308ae52c0c.