Thanks Tom. On Fri, Nov 18, 2011 at 2:32 PM, Tom Evans <tevans...@googlemail.com> wrote:
> On Fri, Nov 18, 2011 at 1:25 PM, Kayode Odeyemi <drey...@gmail.com> wrote: > > On Fri, Nov 18, 2011 at 12:04 PM, Tom Evans <tevans...@googlemail.com> > > wrote: > >> > >> On Fri, Nov 18, 2011 at 8:20 AM, Kayode Odeyemi <drey...@gmail.com> > wrote: > >> > Hello friends, > >> > > >> > I'm having a deep Django-MySQLDB error and I'm doing some debugging to > >> > trace exactly where the problem is. It seems to me that this is very > >> > related > >> > to MySQLDB > >> > cursor implementaton. > >> > > >> > What I want to do is to run the raw sql from the interactive mode like > >> > this: > >> > > >> > import MySQLdb > >> > db=MySQLdb.connect(passwd="pass",db="dname") > >> > c=db.cursor() > >> > max_price=5 > >> > c.execute(RAW_SQL_HERE) > >> > > >> > In case you don't mind, here is the full stack trace: > >> > > >> > Traceback (most recent call last): > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\celery-2.3.2-py2.7.egg\celery\execute\trace.py" > >> > , line 36, in trace > >> > return cls(states.SUCCESS, retval=fun(*args, **kwargs)) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\celery-2.3.2-py2.7.egg\celery\app\task\__init__ > >> > .py", line 232, in __call__ > >> > return self.run(*args, **kwargs) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\celery-2.3.2-py2.7.egg\celery\app\__init__.py", > >> > line 172, in run > >> > return fun(*args, **kwargs) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\transaction.py", > >> > line 217, in inner > >> > res = func(*args, **kwargs) > >> > File "api\tasks.py", line 146, in queue_transaction > >> > txn.save() > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\base.py", > >> > line 460, in save > >> > self.save_base(using=using, force_insert=force_insert, > >> > force_update=force_update) > >> > > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\base.py", > >> > line 570, in save_base > >> > created=(not record_exists), raw=raw, using=using) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\dispatch\dispatcher > >> > .py", line 172, in send > >> > response = receiver(signal=self, sender=sender, **named) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django_audit_log-0.2.2-py2.7.egg\audit_log\mode > >> > ls\managers.py", line 64, in post_save > >> > self.create_log_entry(instance, created and 'I' or 'U') > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django_audit_log-0.2.2-py2.7.egg\audit_log\mode > >> > ls\managers.py", line 61, in create_log_entry > >> > manager.create(action_type = action_type, **attrs) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\manager.p > >> > y", line 138, in create > >> > return self.get_query_set().create(**kwargs) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\query.py" > >> > , line 360, in create > >> > obj.save(force_insert=True, using=self.db) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\base.py", > >> > line 460, in save > >> > self.save_base(using=using, force_insert=force_insert, > >> > force_update=force_update) > >> > > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\base.py", > >> > line 553, in save_base > >> > result = manager._insert(values, return_id=update_pk, using=using) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\manager.p > >> > y", line 195, in _insert > >> > return insert_query(self.model, values, **kwargs) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\query.py" > >> > , line 1436, in insert_query > >> > return query.get_compiler(using=using).execute_sql(return_id) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\sql\compi > >> > ler.py", line 791, in execute_sql > >> > cursor = super(SQLInsertCompiler, self).execute_sql(None) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\models\sql\compi > >> > ler.py", line 735, in execute_sql > >> > cursor.execute(sql, params) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\backends\util.py > >> > ", line 34, in execute > >> > return self.cursor.execute(sql, params) > >> > File > >> > > >> > > "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\backends\mysql\b > >> > ase.py", line 86, in execute > >> > return self.cursor.execute(query, args) > >> > File "build\bdist.win32\egg\MySQLdb\cursors.py", line 176, in execute > >> > if not self._defer_warnings: self._warning_check() > >> > File "build\bdist.win32\egg\MySQLdb\cursors.py", line 92, in > >> > _warning_check > >> > warn(w[-1], self.Warning, 3) > >> > Warning: Data truncated for column 'jno' at row 1 > >> > None > >> > > >> > > >> > Some of the solutions I found on the internet such as changing teh > >> > default > >> > character set > >> > to utf8 has been done. I also consulted MySQL doc ref by changing the > >> > sql_mode to > >> > TRADITIONA both at session and global level, as well as in > settings.py. > >> > Still no luck. > >> > > >> > Please how do I get the raw SQL executed by Django? > >> > > >> > Any help will be appreciated. > >> > > >> > >> Your SQL query, which you didn't show, is inserting data into a DB > >> table, whose definition you didn't show. The data it is inserting in, > >> which you didn't show, is getting truncated in the 'jno' column. > > > > Why this is getting truncated I don't know because the field has a > length of > > 50 and the value I'm trying to store is 01234SS. So I just concluded that > > the data I'm trying to insert in not the problem here neither it is the > > table structure. > > > > I don't know why; you still haven't shown your DB table, data, query... > > Strange conclusion btw. > Here is what it looks like: models.py --------------- class Transaction(models.Model): id = models.AutoField(primary_key=True) type = models.CharField(max_length=50) nid = models.IntegerField() jamb_no = models.CharField(max_length=20, blank=False) tasks.py ------------ Please see the full function at http://codepad.org/ChStEwd5 > > >> > >> This > >> is raised as an exception, since you set sql_mode to TRADITIONAL > > > > Before setting the sql_mode to TRADITIONAL, it was at its default state, > and > > it still got the warnings as error. > > > >> > >> and/or run in DEBUG mode, which makes django configure > >> Database.Warning as errors. > > > > Does this mean that if I'm not running Django in DEBUG mode, the record > will > > still be inserted ignoring the warnings? > > Yes, the warning is still generated, but it is suppressed and no > exception will be raised, unless you are running in TRADITIONAL mode. > OMG! You just saved me 4 days of trouble, head-ache and sleep-less night. Thank you very much. > > >> > >> Django doesn't execute the query, you are executing it on the raw DB > >> cursor, so it will not be logged (certainly not by DDT). > > > > Actually I just want to put some debug trace in Django source and > re-compile > > so I can see the raw sql. Isn't this possible? (Already considering > > django-debug-toolbar) > > DDT reports the queries that are logged by django's ORM. This query is > not made by Django's ORM. Therefore, it will not be logged by DDT. > > Django is not making the query, you are, using a py-mysqldb cursor. > Therefore to log it in more detail than what you already know - you > are passing the query and the arguments - you would need to look into > py-mysqldb. > > Just for the sake of learning. How am I the one creating the queries? I only created a model to be saved by calling save() on it. The rest is left to Django to handle as I can see in the traceback. Though I never saw the sql (which is what I've been looking for) . py-mysqldb also doesn't create the query. It does some magic of importing a MySQL C library and then doing something like db.query() on the Connection subclass, with _mysql.connection as it's parent. But the exact query() method was never found. I just couldn't trace it. > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-users@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > > -- Odeyemi 'Kayode O. http://www.sinati.com. t: @charyorde -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.