今天更新django中的表字段,由于mysql从5.1升级到5.7。以前的外键关联必须从MYISAM改新为INNODB才可以继续。
过程有点刺激,但还好,只要想清楚了过程,提前作好备份,就没啥大问题。
一,django里的mysql配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'PDB',
'USER': 'user',
'PASSWORD': 'xxxx',
'HOST': '1.2.3.4',
'PORT': '3306',
'OPTIONS': {"init_command": "SET default_storage_engine=INNODB;"},
},
}
二,查看现在库里表的存储引擎
SELECT table_name, table_type, engine FROM information_schema.tables
WHERE table_schema = 'xxxxDB' ORDER BY table_name DESC;
三,生成更改所有数据表引擎的mysql语句
SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' ENGINE=InnoDB;' )
FROM information_schema.tables
WHERE table_schema = 'xxxxDB';
四,将这些语句放到mysql里执行一次
...
ALTER TABLE A ENGINE=InnoDB;
ALTER TABLE B ENGINE=InnoDB;
ALTER TABLE C ENGINE=InnoDB;
ALTER TABLE H ENGINE=InnoDB;
ALTER TABLE D ENGINE=InnoDB;
ALTER TABLE E ENGINE=InnoDB;
...
五,在my.cnf里将默认引擎设置为innodb,然后,使用show engine,即可看到mysql的默认存储引擎了。
show engine
六,有了以上操作之后,在django里使用makemigrations,migrate命令,就没啥问题了。如果上面步骤没操作出问题,记得先复原数据库,再操作。
标签:ENGINE,INNODB,MyISAM,mysql,InnoDB,TABLE,table,ALTER
来源: https://www.cnblogs.com/aguncn/p/11084088.html