Ero*_*eal 20 django django-models storage-engines django-south
我遇到了一个问题,当我迁移时,南方为新模型创建了一个新表模型作为INNODB,但当另一个开发人员运行自己的迁移时,将该表创建为MYISAM.
这个问题是我的所有其他表都是MYISAM,因此使用新表会导致许多外键约束错误.
如何明确确保使用MYISAM创建表?
是什么导致在不同环境中使用不同的存储引擎创建表?
小智 23
为了确保所有迁移始终使用INNODB完成,您应该直接在数据库定义中将存储引擎设置为INNODB,如下所示:
DATABASES = {
'default': {
...
'OPTIONS' : { 'init_command' : 'SET storage_engine=INNODB', },
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是MySQL 5.7.x及更高版本,
DATABASES = {
'default': {
...
'OPTIONS' : { 'init_command' : 'SET default_storage_engine=INNODB', },
}
Run Code Online (Sandbox Code Playgroud)
但是你应该知道它可能会受到性能影响.因此,您可能只想在运行迁移时设置此选项.
dno*_*zay 14
如果使用South,则可以设置STORAGE_ENGINE.
django <1.2
# add to your settings file
DATABASE_STORAGE_ENGINE = 'INNODB' # django < 1.2
Run Code Online (Sandbox Code Playgroud)
django> = 1.2
# add to your settings file
DATABASES = {
'default': {
...
'STORAGE_ENGINE': 'INNODB'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4158 次 |
| 最近记录: |