2014-12-16 17 views
7

Come forzare django a utilizzare il motore di archiviazione MYISAM durante la creazione del database utilizzando il comando syncdb? Questo page non aiuta molto a far luce su questo problema.Force django per creare tabelle utilizzando il motore di archiviazione MYISAM

MYISAM è la scelta perfetta poiché il database è utilizzato quasi esclusivamente per la lettura e MYISAM è notevolmente più veloce di InnoDB. Esistono ancora alcuni modelli .ForeignKey nel modello, ma vengono utilizzati solo per creare pagine di amministrazione del dettaglio principale. Non c'è bisogno di avere le chiavi esterne reali nel database.

risposta

12

Vedere this page. L'uso di una variabile OPTIONS nell'impostazione DATABASES dovrebbe fare il trucco, ma la migrazione di un database esistente in un nuovo motore non è così semplice (si pensi che si dovrebbe reinizializzare).

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

un suggerimento su migrazione di un db esistente: probabilmente si vorrà per scaricare a qualcosa come YAML, e l'importazione che già nel dopo aver ricreare lo schema . – WhyNotHugo

+0

Utilizzare 'default_storage_engine' invece di' storage_engine' per mysql 5.7+ –

-1

È necessario impostare il motore di archiviazione come INNODB nella definizione del database direttamente, come questo.

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

Per la nuova versione è possibile utilizzare:

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

Questo non ha funzionato per me. Sto usando django 1.7 – bman

+0

per mysql 6 hai bisogno di DEFAULT_STORAGE_ENGINE – YardenST

+0

e anche allora non funziona per me – YardenST