今天更新django中的表字段,因为mysql从5.1升级到5.7。之前的外键关联必须从MYISAM改新为INNODB才能够继续。mysql
过程有点刺激,但还好,只要想清楚了过程,提早做好备份,就没啥大问题。sql
一,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;"}, }, }
二,查看如今库里表的存储引擎django
SELECT table_name, table_type, engine FROM information_schema.tables WHERE table_schema = 'xxxxDB' ORDER BY table_name DESC;
三,生成更改全部数据表引擎的mysql语句spa
SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' ENGINE=InnoDB;' ) FROM information_schema.tables WHERE table_schema = 'xxxxDB';
四,将这些语句放到mysql里执行一次code
... 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的默认存储引擎了。orm
show engine
六,有了以上操做以后,在django里使用makemigrations,migrate命令,就没啥问题了。若是上面步骤没操做出问题,记得先复原数据库,再操做。blog