Opened 14 years ago
Closed 14 years ago
#16613 closed Bug (fixed)
manage.py test fails on database creation (MySQL)
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | Uncategorized | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Hi,
Running python manage.py test with Django-trunk/Debian-Lenny/Python2.5/MySQL-5.0 give me this :
Traceback (most recent call last):
File "manage.py", line 14, in <module>
execute_manager(settings)
File "/home/pages/lib/python/django/core/management/__init__.py", line 442, in execute_manager
utility.execute()
File "/home/pages/lib/python/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/pages/lib/python/django/core/management/commands/test.py", line 34, in run_from_argv
super(Command, self).run_from_argv(argv)
File "/home/pages/lib/python/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/pages/lib/python/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/home/pages/lib/python/django/core/management/commands/test.py", line 54, in handle
failures = test_runner.run_tests(test_labels)
File "/home/pages/lib/python/django/test/simple.py", line 354, in run_tests
old_config = self.setup_databases()
File "/home/pages/lib/python/django/test/simple.py", line 291, in setup_databases
test_db_name = connection.creation.create_test_db(self.verbosity, autoclobber=not self.interactive)
File "/home/pages/lib/python/django/db/backends/creation.py", line 230, in create_test_db
self.connection.features.confirm()
File "/home/pages/lib/python/django/db/backends/__init__.py", line 382, in confirm
self.can_introspect_foreign_keys = self._can_introspect_foreign_keys()
File "/home/pages/lib/python/django/db/backends/mysql/base.py", line 146, in _can_introspect_foreign_keys
cursor.execute('SHOW TABLE STATUS WHERE Name="INTROSPECT_TEST"')
File "/home/pages/lib/python/django/db/backends/mysql/base.py", line 86, in execute
return self.cursor.execute(query, args)
File "/var/lib/python-support/python2.5/MySQLdb/cursors.py", line 166, in execute
self.errorhandler(self, exc, value)
File "/var/lib/python-support/python2.5/MySQLdb/connections.py", line 35, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1054, "Unknown column 'INTROSPECT_TEST' in 'where clause'")
I just swapped the quote line 146 and everything works fine.
Attachments (1)
Change History (4)
by , 14 years ago
| Attachment: | db_backend_mysql_base.patch added |
|---|
comment:1 by , 14 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
From http://dev.mysql.com/doc/refman/5.1/en/string-syntax.html:
If the ANSI_QUOTES SQL mode is enabled, string literals can be quoted only within single quotation marks because a string quoted within double quotation marks is interpreted as an identifier.
I didn't find any other instances of this problem in django.db.backends.mysql.
I'm not sure if this needs tests. This is the only thing that prevents me from marking the ticket as RFC.
comment:2 by , 14 years ago
Additional proof:
mysql> set sql_mode = 'ansi'; Query OK, 0 rows affected (0.00 sec) mysql> SHOW TABLE STATUS WHERE Name="INTROSPECT_TEST"; ERROR 1054 (42S22): Unknown column 'INTROSPECT_TEST' in 'where clause' mysql> SHOW TABLE STATUS WHERE Name='INTROSPECT_TEST'; Empty set (0.00 sec)
Patch correcting the database of test for MySQL.