代码之家  ›  专栏  ›  技术社区  ›  Srikar Appalaraju Tonetel

Django设置存储引擎和默认字符集

  •  8
  • Srikar Appalaraju Tonetel  · 技术社区  · 14 年前

    从我的 models.py . 我不知道怎么做两件事-

    1. 我想说明 MySQL 将我的一些表创建为 InnoDB &部分为(amp;S) MyISAM . 我该怎么做?
    2. 我还想指定我的表 DEFAULT CHARSET 作为 utf8 . 我该怎么做?

    这就是我跑步时看到的 syncdb -

    ...
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1
    

    我使用Ubuntu 10.04、Django 1.2.x、MySQL5.1.x

    更新 : 我认为这些可能是MySQL的默认设置&我最终更改了 my.cnf 我添加的地方 default-character-set = utf8 . 但没用。

    2 回复  |  直到 10 年前
        1
  •  17
  •   Mike DeSimone    14 年前

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

    using('innodb')

    syncdb

    CREATE DATABASE django CHARACTER SET utf8;
    

    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

        2
  •  2
  •   Juergen    10 年前
    CREATE TABLE IF NOT EXISTS `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `firstname` varchar(32) NOT NULL,
      `lastname` varchar(32) NOT NULL,
      `gender` varchar(6) NOT NULL,
      `email` varchar(32) NOT NULL,
      `username` varchar(32) NOT NULL,
      `password` varchar(32) NOT NULL,
      `created` datetime NOT NULL,
      `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=76 ;