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

标签 mysql django innodb myisam

有没有办法可以转换一个完整的 MyISAM数据库到 InnoDB(以一种将创建所有外键约束的方式,就像我从头开始运行 syncdb 命令一样)?

最佳答案

这可能有帮助:

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])

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

python manage.py convert_to_innodb

关于mysql - 使用 Django 将现有的 MyISAM 数据库转换为 InnoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235704/

相关文章:

mysql - 如何在 Woocommerce 中删除具有相同产品 ID 的重复产品?

mysql - 在sqlite中选择频率计数的列名

php - MySQL 查询 - 检索仅包含字母和空格的行

Django 翻译 : msgfmt: command not found

php - 如何使用 php 中准备好的语句插入数据库

python - 在 Django 中获取所有相关的模型类

python - Django:在提交表单时生成唯一的 8 字符字母数字 ID 字符串

mysql - 如果调用 "SELECT FOR UPDATE"的线程死了会怎样?该行是否永远锁定?

MySQL 以 DESC 顺序查询比 ASC 顺序更快

php - 如何禁用和启用mysql中所有表的所有约束