Here's my process: In phpmyadmin, open the db, go to add an sql query, add this:
SET @DATABASE_NAME = 'name_of_your_db';
SELECT CONCAT('ALTER TABLE ', table_name, '
ENGINE=InnoDB;') AS sql_statements
FROM information_schema.tables AS tb
WHERE table_schema = @DATABASE_NAME
AND ENGINE
= 'MyISAM'
AND TABLE_TYPE
= 'BASE TABLE'
ORDER BY table_name DESC;
The only thing you need to change is the part "name_of_your_db", put your db name in there. Run it.
It will output the queries you can copy/paste to convert the tables. I usually have to do this a couple times to set the options for Full Text and Show All, so the full queries get displayed.
So you copy those queries it gives back to you, and paste em back in the sql box, run it. It then converts all those tables to InnoDB.
In a lot of cases when converting in MySQL8 I've had to add this to the top of the queries it gives, to force through the data conversion (some tables always error):
SET SQL_MODE='ALLOW_INVALID_DATES';
So the code it spits out and what I run to do the actual conversion ends up looking like this:
SET SQL_MODE='ALLOW_INVALID_DATES';
ALTER TABLE wp_posts
ENGINE=InnoDB;
Probably a better way of doing this, but it's how I've done it for years. Years and years even @_@