Kaydet (Commit) 8d6c2517 authored tarafından Russell Keith-Magee's avatar Russell Keith-Magee

Fixed #16592 -- More test changes and documentation to account for MySQL's…

Fixed #16592 -- More test changes and documentation to account for MySQL's casual relationship with sanity. Thanks to Jim Dalton for the report and patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16787 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst dafb4951
......@@ -326,6 +326,19 @@ storage engine, you have a couple of options.
.. _AlterModelOnSyncDB: http://code.djangoproject.com/wiki/AlterModelOnSyncDB
Table names
-----------
There are `known issues`_ in even the latest versions of MySQL that can cause the
case of a table name to be altered when certain SQL statements are executed
under certain conditions. It is recommended that you use lowercase table
names, if possible, to avoid any problems that might arise from this behavior.
Django uses lowercase table names when it auto-generates table names from
models, so this is mainly a consideration if you are overriding the table name
via the :class:`~django.db.models.Options.db_table` parameter.
.. _known issues: http://bugs.mysql.com/bug.php?id=48875
Notes on specific fields
------------------------
......
......@@ -61,6 +61,13 @@ If your database table name is an SQL reserved word, or contains characters that
aren't allowed in Python variable names -- notably, the hyphen -- that's OK.
Django quotes column and table names behind the scenes.
.. admonition:: Use lowercase table names for MySQL
It is strongly advised that you use lowercase table names when you override
the table name via ``db_table``, particularly if you are using the MySQL
backend. See the :ref:`MySQL notes <mysql-notes>` for more details.
``db_tablespace``
-----------------
......
......@@ -12,7 +12,7 @@ class A01(models.Model):
f_b = models.IntegerField()
class Meta:
db_table = 'A01'
db_table = 'a01'
def __unicode__(self):
return self.f_a
......@@ -23,7 +23,7 @@ class B01(models.Model):
f_b = models.IntegerField()
class Meta:
db_table = 'B01'
db_table = 'b01'
# 'managed' is True by default. This tests we can set it explicitly.
managed = True
......@@ -31,12 +31,12 @@ class B01(models.Model):
return self.f_a
class C01(models.Model):
mm_a = models.ManyToManyField(A01, db_table='D01')
mm_a = models.ManyToManyField(A01, db_table='d01')
f_a = models.CharField(max_length=10, db_index=True)
f_b = models.IntegerField()
class Meta:
db_table = 'C01'
db_table = 'c01'
def __unicode__(self):
return self.f_a
......@@ -49,7 +49,7 @@ class A02(models.Model):
f_a = models.CharField(max_length=10, db_index=True)
class Meta:
db_table = 'A01'
db_table = 'a01'
managed = False
def __unicode__(self):
......@@ -57,7 +57,7 @@ class A02(models.Model):
class B02(models.Model):
class Meta:
db_table = 'B01'
db_table = 'b01'
managed = False
fk_a = models.ForeignKey(A02)
......@@ -75,7 +75,7 @@ class C02(models.Model):
f_b = models.IntegerField()
class Meta:
db_table = 'C01'
db_table = 'c01'
managed = False
def __unicode__(self):
......@@ -86,7 +86,7 @@ class Intermediate(models.Model):
c02 = models.ForeignKey(C02, db_column="c01_id")
class Meta:
db_table = 'D01'
db_table = 'd01'
managed = False
#
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment