tipos relaciones inspectdb formularios datos consultas consulta avanzados avanzadas actualizar django django-models django-south storage-engines

relaciones - inspectdb django



Configurar explícitamente el motor de almacenamiento de tablas MySQL usando South y Django (2)

Para asegurarse de que todas las migraciones se realicen siempre utilizando INNODB, debe establecer el motor de almacenamiento como INNODB en la definición de la base de datos directamente, de esta manera:

DATABASES = { ''default'': { ... ''OPTIONS'' : { ''init_command'' : ''SET storage_engine=INNODB'', }, }

Si está utilizando MySQL 5.7.x y superior,

DATABASES = { ''default'': { ... ''OPTIONS'' : { ''init_command'' : ''SET default_storage_engine=INNODB'', }, }

Pero debes saber que puede tener un impacto de rendimiento . Por lo tanto, es posible que desee configurar esta opción solo cuando se ejecutan migraciones.

Estoy encontrando un problema que South crea la tabla de base de datos para un nuevo modelo como INNODB cuando migro, pero crea la tabla como MYISAM cuando otro desarrollador ejecuta su propia migración.

El problema con esto es que todas mis otras tablas son MYISAM, por lo que usar las nuevas tablas conlleva muchos errores de restricción de clave externa.

¿Cómo puedo asegurarme explícitamente de que la tabla se crea utilizando MYISAM?

¿Qué podría estar causando que la tabla se cree utilizando un motor de almacenamiento diferente en diferentes entornos?


Si usa South, puede configurar el STORAGE_ENGINE .

django <1.2

# add to your settings file DATABASE_STORAGE_ENGINE = ''INNODB'' # django < 1.2

django> = 1.2

# add to your settings file DATABASES = { ''default'': { ... ''STORAGE_ENGINE'': ''INNODB'' } }