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.

>>
>> 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.

>>
>> 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.

Tom

-- 
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.

Reply via email to