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