Mysql
 sql >> база данни >  >> RDS >> Mysql

Django зададе Storage Engine &Charset по подразбиране

Не мисля, че можете да промените механизмите за съхранение на база таблица по таблица, но можете да го направите на база база данни. Това, разбира се, означава, че ограниченията за външни ключове на InnoDB, например, не могат да се прилагат към външни ключове към MyISAM таблици.

Така че трябва да декларирате две „бази данни“, които може да са на един и същ сървър:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        #...
    }
    'innodb': {
        'ENGINE': 'django.db.backends.mysql',
        #...
        'OPTIONS': { 'init_command': 'SET storage_engine=INNODB;' }
    }
}

И просто ще трябва да приложите using('innodb') към набори от заявки за таблици в земята на InnoDB.

Що се отнася до UTF-8, отново мисля, че трябва да направите това на ниво база данни. Не мисля, че syncdb създава базата данни за вас, само таблиците. Все пак трябва да създадете базата данни ръчно, за да можете да зададете привилегии точно преди да стартирате syncdb . Командата за създаване на база данни, която искате, е:

CREATE DATABASE django CHARACTER SET utf8;

Въпреки това обикновено препоръчвам хората да създадат двама потребители на django в базата данни:един за работа със схемата на базата данни („admin“) и един за всичко останало (с различни пароли):

CREATE DATABASE django CHARACTER SET utf8;
CREATE USER 'django_site'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON django.* TO django_site;
CREATE USER 'django_admin'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON django.* TO django_admin;
GRANT CREATE, DROP, ALTER, INDEX, LOCK TABLES ON django.* TO django_admin;
FLUSH PRIVILEGES;

(Обърнете внимание, че това трябва да се направи за всяка база данни.)

За да работи това, трябва да модифицирате manage.py :

import sys
if len(sys.argv) >= 2 and sys.argv[1] in ["syncdb", "dbshell", "migrate"]:
    os.environ['DJANGO_ACCESS'] = "ADMIN"

След това във вашия settings.py , използвайте променливата на средата, за да изберете правилните настройки. Уверете се, че потребителят на сайта (т.е. без администратор) е по подразбиране.

(Освен това, аз не съхранявам настройката на базата данни, SECRET_KEY , или нещо друго чувствително в settings.py защото моят Django проект се съхранява в Mercurial; Имам settings.py изтеглете всичко това от външен файл, достъпен само от потребителя на Django и администраторите на сървъра. Ще оставя "как" като упражнение за читателя... защото подробно описах част от него в отговорите на въпросите на другите и ме мързи да го търся точно сега.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя нова колона към таблицата на MYSQL?

  2. MySQL пълнотекстово търсене на хештагове (включително символа # в индекса)

  3. Таблица Hive връща празен набор от резултати за всички заявки

  4. Схема за експортиране на MySql без данни

  5. php- получаване на идентификатор на последното вмъкване