今天更新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