From 6d5f811cdb97610a6886cb6afc1be0f1f5224ea7 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sun, 12 Apr 2009 02:17:45 +0000 Subject: [PATCH] [1.0.X] Fixed #10438 -- Fixed MySQL backend behaviour for UPDATE behaviour. We need to know the number of rows that are matched by an UPDATE query, not just the number of rows that are changed. In the relatively unlikely event that somebody was using Django's cursor proxy and relying on the previous behaviour, well, that isn't the case any longer. We need to this version. Thanks to Daniel Tang for pointing out the solution here. Backport of r10532 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@10533 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/backends/mysql/base.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index 2fb1988f7a..fa023ff98b 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -22,7 +22,7 @@ if (version < (1,2,1) or (version[:3] == (1, 2, 1) and raise ImproperlyConfigured("MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__) from MySQLdb.converters import conversions -from MySQLdb.constants import FIELD_TYPE, FLAG +from MySQLdb.constants import FIELD_TYPE, FLAG, CLIENT from django.db.backends import * from django.db.backends.mysql.client import DatabaseClient @@ -258,6 +258,9 @@ class DatabaseWrapper(BaseDatabaseWrapper): kwargs['host'] = settings.DATABASE_HOST if settings.DATABASE_PORT: kwargs['port'] = int(settings.DATABASE_PORT) + # We need the number of potentially affected rows after an + # "UPDATE", not the number of changed rows. + kwargs['client_flag'] = CLIENT.FOUND_ROWS kwargs.update(self.options) self.connection = Database.connect(**kwargs) self.connection.encoders[SafeUnicode] = self.connection.encoders[unicode]