2014-12-16 12 views
7

Wie erzwingen Django zur Verwendung MYISAM Storage-Engine beim Erstellen von Datenbank mit syncdb Befehl? Diese page hilft nicht viel, in dieser Ausgabe Licht zu werfen.Force Django zum Erstellen von Tabellen mit MYISAM-Speicher-Engine

MYISAM ist die perfekte Wahl, da die Datenbank fast nur zum Lesen verwendet wird und MYISAM wesentlich schneller als InnoDB ist. Es gibt noch einige models.ForeignKey Felder im Modell, aber sie werden nur verwendet, um Master-Detail-Admin-Seiten zu erstellen. Es ist nicht notwendig, die tatsächlichen Fremdschlüssel in der Datenbank zu haben.

Antwort

12

Siehe this page. Eine OPTIONS Variable in Ihrer DATABASES Einstellung sollte den Trick machen, aber die Migration einer bestehenden Datenbank zu einer neuen Engine ist nicht so einfach (denke, Sie müssten neu initialisieren).

DATABASES = { 
    'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': '',      
    'USER': '',  
    'PASSWORD': '', 
    'OPTIONS': { 
      "init_command": "SET storage_engine=MYISAM", 
    } 
    } 
} 
+1

Ein Hinweis auf die Migration eines vorhandenen db: Sie wahrscheinlich so etwas wie yaml dump wollen werden, und importieren, die nach dem Sie das Schema neu erstellen zurück in . – WhyNotHugo

+0

Sollte 'default_storage_engine' anstelle von' storage_engine' für mysql 5.7+ –

-1

Sie sollten die Speicher-Engine direkt wie INNODB in der Datenbankdefinition festlegen.

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     ..... 
     'STORAGE_ENGINE': 'MYISAM' 
    } 
} 

für neue Version können Sie:

DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      ..... 
      'OPTIONS': { 
        "init_command": "SET storage_engine=MYISAM", 
         } 
     } 
    } 
+0

verwenden Das hat nicht für mich funktioniert. Ich benutze django 1.7 – bman

+0

für mysql 6 Sie brauchen DEFAULT_STORAGE_ENGINE – YardenST

+0

und selbst dann funktioniert nicht für mich – YardenST