Заставить django создавать таблицы с помощью MYISAM storage engine


Как заставить django использовать MYISAM storage engine при создании базы данных с помощью команды syncdb ? Эта страница не очень помогает пролить свет на этот вопрос.

MYISAM-идеальный выбор, так как база данных почти используется только для чтения, и MYISAM значительно быстрее, чем InnoDB. Есть еще некоторые модели .Поля ForeignKey в модели, но они используются только для создания главных страниц администратора сведений. Нет необходимости в том, чтобы иметь фактическое внешние ключи в базе данных.

2 7

2 ответа:

Смотритеэту страницу . Использование переменной OPTIONS в вашей настройке DATABASES должно сделать трюк, но перенос существующей базы данных на новый движок не так прост (думаю, вам придется заново инициализировать).

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

Вы должны установить механизм хранения как 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",
                      } 
       }
    }