0

I have 3 WordPress blog hosted on cPanel using MySQL. All 3 of them were working fine until yesterday. Now, the support says that “some tables changed from 'MyISAM' to InnoDB”.

In the logs I get:

[mydb.wp_usermeta] Error: Unknown storage engine 'InnoDB'
[mydb.wp_usermeta] error: Corrupt

And the same for other tables.

I don't know why those tables changed the engine. Is it possible for MySQL to have changed it automatically for some reason?

Laurenz Albe
62.1k4 gold badges57 silver badges93 bronze badges
asked Oct 31, 2018 at 13:05
2
  • 1
    No. Check MySQL logs for ALTER TABLE and define its source. Commented Oct 31, 2018 at 13:13
  • @gog, Never automatically change any of MySQL storage engine to other one. Commented Oct 31, 2018 at 13:37

2 Answers 2

1
SHOW VARIABLES LIKE `%engine%`;

Of interest are default_storage_engine, which was MyISAM in older versions, but is now InnoDB. This comes into play when you do CREATE TABLE without including ENGINE=....

Also of interest is enforce_storage_engine. This strengthens the previous setting by not letting you create a table of Engine other than the default.

When changing (ALTER TABLE .. ENGINE=..) a table from one engine to another, there are some number of potential pitfalls. I cover MyISAM --> InnoDB in here.

Did you recently upgrade MySQL? If so, any number of problems can occur if the upgrade failed to run mysql_upgrade.

What version of MySQL are you running?

Please provide the recent contents of mysqld.err.

Please provide ls -ld /tmp

Are you using RoundCube? The bug seems to be related to their installation.

answered Nov 1, 2018 at 1:56
1
  • Maybe your hosting provider updated mysql without notifying you, or you missed the notification somehow. Commented Oct 14, 2020 at 10:06
0

Is possible to mysql change some engine tables automatically?

No, Never MySQL any engine change to other MySQL storage engine automatically. As per siteground blog here if your MySQL database is interacting through phpMyAdmin with cPanel. Then the easiest way to change the database engine of a MySQL database table is through phpMyAdmin available in cPanel.

For example, if you have a database table called my_table using MyISAM engine and you wish to change the engine from MyISAM to InnoDB you will need to:

Access phpMyAdmin and select your database. Then click the SQL tab, place the following query and click the Go button:

ALTER TABLE my_table ENGINE = InnoDB;

If the query is executed properly, the database engine of the table will be changed to InnoDB.

answered Oct 31, 2018 at 13:35

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.