將mysql從MyISAM更改成INNODB

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

相關文章
相關標籤/搜索