Question

I'm trying to convert a whole database from MyISAM to InnoDB with this statement:

use information_schema;

SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') 
FROM information_schema.tables 
WHERE engine = "MyISAM" AND table_type = "BASE TABLE" AND table_schema = "database";

and while I get a result that every table is changed for example:

ALTER TABLE database.action ENGINE=InnoDB;

when I check the table engines they're still MyISAM. The weird thing is that if I run the command separately

ALTER TABLE action ENGINE='InnoDB';

it works fine for that table.

Any tips on how to do the conversion for the whole database?

Was it helpful?

Solution

The SELECT statement you are running only generates strings; the strings it generates are not being executed as SQL statements. You'd need to take the resultset from that query, and then actually execute those statements as a separate step.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top