强制django使用MYISAM存储引擎创建表

时间:2014-12-16 03:11:14

标签: django django-models myisam

如何在使用 syncdb 命令创建数据库时强制django使用MYISAM存储引擎?这个page对这个问题没有多大帮助。

MYISAM是完美的选择,因为数据库几乎只用于阅读,而MYISAM比InnoDB快得多。模型中仍然存在一些 models.ForeignKey 字段,但它们仅用于创建主详细信息管理页面。数据库中不需要实际的外键。

2 个答案:

答案 0 :(得分:12)

this page。在OPTIONS设置中使用DATABASES变量应该可以解决问题,但将现有数据库迁移到新引擎并不容易(认为您必须重新初始化)。

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

答案 1 :(得分:-1)

您应该直接在数据库定义中将存储引擎设置为INNODB,如下所示。

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

对于新版本,您可以使用:

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