| 1 |
<p>For that I have another approach I took, I modified the settings file & added in Meta an option. To give you |
|---|
| 2 |
an idea here's the patch |
|---|
| 3 |
against Revision: 5773. |
|---|
| 4 |
</p> |
|---|
| 5 |
<pre class="wiki"># use a consistant MySQL storage type for all apps, all models |
|---|
| 6 |
|
|---|
| 7 |
Index: django/db/models/options.py |
|---|
| 8 |
=================================================================== |
|---|
| 9 |
--- django/db/models/options.py (revision 5773) |
|---|
| 10 |
+++ django/db/models/options.py (working copy) |
|---|
| 11 |
@@ -15,7 +15,7 @@ |
|---|
| 12 |
|
|---|
| 13 |
DEFAULT_NAMES = ('verbose_name', 'db_table', 'ordering', |
|---|
| 14 |
'unique_together', 'permissions', 'get_latest_by', |
|---|
| 15 |
- 'order_with_respect_to', 'app_label', 'db_tablespace') |
|---|
| 16 |
+ 'order_with_respect_to', 'app_label', 'db_tablespace', 'db_storage_engine') |
|---|
| 17 |
|
|---|
| 18 |
class Options(object): |
|---|
| 19 |
def __init__(self, meta): |
|---|
| 20 |
@@ -30,6 +30,7 @@ |
|---|
| 21 |
self.get_latest_by = None |
|---|
| 22 |
self.order_with_respect_to = None |
|---|
| 23 |
self.db_tablespace = None |
|---|
| 24 |
+ self.db_storage_engine = None |
|---|
| 25 |
self.admin = None |
|---|
| 26 |
self.meta = meta |
|---|
| 27 |
self.pk = None |
|---|
| 28 |
Index: django/db/backends/mysql/base.py |
|---|
| 29 |
=================================================================== |
|---|
| 30 |
--- django/db/backends/mysql/base.py (revision 5773) |
|---|
| 31 |
+++ django/db/backends/mysql/base.py (working copy) |
|---|
| 32 |
@@ -141,6 +141,7 @@ |
|---|
| 33 |
needs_upper_for_iops = False |
|---|
| 34 |
supports_constraints = True |
|---|
| 35 |
supports_tablespaces = False |
|---|
| 36 |
+supports_storage_engines = True |
|---|
| 37 |
uses_case_insensitive_names = False |
|---|
| 38 |
|
|---|
| 39 |
def quote_name(name): |
|---|
| 40 |
@@ -207,6 +208,9 @@ |
|---|
| 41 |
def get_autoinc_sql(table): |
|---|
| 42 |
return None |
|---|
| 43 |
|
|---|
| 44 |
+def get_storageengine_sql(engine): |
|---|
| 45 |
+ return "ENGINE = %s" % engine |
|---|
| 46 |
+ |
|---|
| 47 |
def get_sql_flush(style, tables, sequences): |
|---|
| 48 |
"""Return a list of SQL statements required to remove all data from |
|---|
| 49 |
all tables in the database (without actually removing the tables |
|---|
| 50 |
Index: django/core/management.py |
|---|
| 51 |
=================================================================== |
|---|
| 52 |
--- django/core/management.py (revision 5773) |
|---|
| 53 |
+++ django/core/management.py (working copy) |
|---|
| 54 |
@@ -153,6 +153,7 @@ |
|---|
| 55 |
Returns list_of_sql, pending_references_dict |
|---|
| 56 |
""" |
|---|
| 57 |
from django.db import backend, models |
|---|
| 58 |
+ from django.conf import settings |
|---|
| 59 |
|
|---|
| 60 |
opts = model._meta |
|---|
| 61 |
final_output = [] |
|---|
| 62 |
@@ -203,6 +204,9 @@ |
|---|
| 63 |
full_statement.append(')') |
|---|
| 64 |
if opts.db_tablespace and backend.supports_tablespaces: |
|---|
| 65 |
full_statement.append(backend.get_tablespace_sql(opts.db_tablespace)) |
|---|
| 66 |
+ if backend.supports_storage_engines: |
|---|
| 67 |
+ storage = opts.db_storage_engine or settings.DATABASE_STORAGE_ENGINE |
|---|
| 68 |
+ full_statement.append(backend.get_storageengine_sql(storage)) |
|---|
| 69 |
full_statement.append(';') |
|---|
| 70 |
final_output.append('\n'.join(full_statement)) |
|---|
| 71 |
|
|---|
| 72 |
</pre> |
|---|
| 73 |
|
|---|
| 74 |
<p> |
|---|
| 75 |
For brevity's sake, Only works for SQL here, other backends would need to simply set the <tt>supports_storage_engines = False</tt>. |
|---|
| 76 |
</p> |
|---|
| 77 |
<p> |
|---|
| 78 |
If enough interest arises, I can modify that into a proper patch against <tt>HEAD</tt> |
|---|
| 79 |
</p> |
|---|
| 80 |
<verbatim> |
|---|
| 81 |
--- tony |
|---|
| 82 |
</verbatim> |
|---|