我想運行一個查詢表改變的引擎(ALTER TABLE table1
ENGINE = INNODB)僅在當前引擎不INNODB。MySQL查詢修改表的發動機只有當發動機沒有InnoDB的
我該怎麼做?
更新: 我有一個查詢試圖改變,而其已經的InnoDB表的發動機的情況。
我想運行一個查詢表改變的引擎(ALTER TABLE table1
ENGINE = INNODB)僅在當前引擎不INNODB。MySQL查詢修改表的發動機只有當發動機沒有InnoDB的
我該怎麼做?
更新: 我有一個查詢試圖改變,而其已經的InnoDB表的發動機的情況。
您可以使用
ALTER TABLE t ENGINE = InnoDB;
您可以使用此查詢。如果db引擎已經是InnoDB,那麼什麼都不會發生。 輸出將被
MySQL returned an empty result set (i.e. zero rows)
如果引擎沒有InnoDB的,那麼它會轉換爲InnoDB的。
該命令沒有影響,如果該表已經在InnoDB
。
您可以從INFORMATION_SCHEMA查詢表引擎:
SELECT `ENGINE` from `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA`='my_schema' AND `TABLE_NAME`='table1';
http://mysql.rjweb.org/doc.php/myisam2innodb#generating_alters提供了有關從MyISAM數據轉換爲InnoDB的,包括幾個小竅門:
要生成所有的改變把所有的MyISAM表到InnoDB的:
SELECT CONCAT('USE ', table_schema, '; ALTER TABLE ', table_name, ' ENGINE=InnoDB;')
FROM information_schema.tables
WHERE engine = 'MyISAM'
AND table_schema NOT IN ('mysql', 'information_schema', 'performance_schema');
然後複製並粘貼到輸出mysql的命令行工具。