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