使用Django将现有的MyISAM数据库转换为InnoDB

Oha*_*had 8 mysql django myisam innodb

无论如何,我可以将一个完整填充的MyISAM数据库转换为InnoDB(以某种方式创建所有外键约束,就像我从头开始运行syncdb命令一样)?

lee*_*ech 6

这可能有所帮助:

from django.core.management.base import BaseCommand
from django.db import connections


class Command(BaseCommand):

    def handle(self, database="default", *args, **options):

        cursor = connections[database].cursor()

        cursor.execute("SHOW TABLE STATUS")

        for row in cursor.fetchall():
            if row[1] != "InnoDB":
                print "Converting %s" % row[0],
                print cursor.execute("ALTER TABLE %s ENGINE=INNODB" % row[0])
Run Code Online (Sandbox Code Playgroud)

在文件夹管理/命令下将其添加到您的应用程序/然后您可以使用manage.py命令转换所有表:

python manage.py convert_to_innodb
Run Code Online (Sandbox Code Playgroud)


Chr*_*att 2

这确实与Django无关。这完全是 MySQL 的事情,并且有直接来自他们的关于此类事情的文档:http://dev.mysql.com/doc/refman/5.5/en/converting-tables-to-innodb.html