Mysql 为什么要删除django数据库选项';s";init_命令集引擎=INNODB";创建表之后?
上的文件说: 另一个选项是在创建表之前使用MySQLdb的init_命令选项:Mysql 为什么要删除django数据库选项';s";init_命令集引擎=INNODB";创建表之后?,mysql,django,innodb,Mysql,Django,Innodb,上的文件说: 另一个选项是在创建表之前使用MySQLdb的init_命令选项: DATABASE_OPTIONS = { "init_command": "SET storage_engine=INNODB", } 这将设置连接到数据库时的默认存储引擎。 创建表后,应删除此选项,如下所示: 它将只在表创建期间需要的查询添加到每个 数据库连接 有人知道为什么在创建表后必须删除此选项吗?通常权限和设置是基于树的。会话的设置将是指向比您高一级的默认设置的指针。您的会话设置将已经创建,并且在第一
DATABASE_OPTIONS = {
"init_command": "SET storage_engine=INNODB",
}
这将设置连接到数据库时的默认存储引擎。
创建表后,应删除此选项,如下所示:
它将只在表创建期间需要的查询添加到每个
数据库连接
有人知道为什么在创建表后必须删除此选项吗?通常权限和设置是基于树的。会话的设置将是指向比您高一级的默认设置的指针。您的会话设置将已经创建,并且在第一次连接时仅引用默认设置 修改设置时,例如通过设置存储引擎值,可以创建所有设置的新副本并更改一个值(如在Apache中),也可以向树中添加另一层,解析值时必须签入该层。实际上我不确定MySQL使用哪一种,但不管怎样,如果您不需要这个设置,您不应该在每次往返中都设置它 如果您确实相对频繁地需要它,那么它可能值得性能的提升。PHP中也出现了类似的问题。您不想在PHP代码中修改PHP include path之类的变量,这会增加大量开销
Jacob如果您有其他选择,例如: 数据库_选项={ “初始化命令”:“设置存储引擎=INNODB,等待超时=30,时区=…”, }
那么,保留默认的存储引擎设置也无妨。从django 1.2开始,语法已经更改
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '',
'USER': '',
'PASSWORD': '',
'OPTIONS': {
"init_command": "SET storage_engine=INNODB",
}
}
}
删除此选项以提高效率—您无需在每次连接到数据库时设置存储引擎,仅当您创建表时(即syncdb、south)