Error: The current storage engine is MyISAM.

21 views
Skip to first unread message

Mingxing Tian

unread,
Sep 3, 2018, 9:58:08 PM9/3/18
to Trac Users
I confirm that the engine is already InnoDB, but it still detects errors.

0001.png

C:\Users\Administrator>trac-admin "D:\myproject" deploy "D:\myproject_deploy"
Error: The current storage engine is MyISAM. It must be InnoDB or NDB storage engine to support transactions.


RjOllos

unread,
Sep 3, 2018, 10:00:41 PM9/3/18
to Trac Users
Which version of Trac and which version of MySQL?

- Ryan 

Mingxing Tian

unread,
Sep 3, 2018, 10:30:56 PM9/3/18
to Trac Users
RjOllos於 2018年9月4日星期二 UTC+8上午10時00分41秒寫道:
I have found out that something went wrong. I changed the default engine of the entire database instance to InnoDB. I think you should not check the engine of the entire instance, but one of the specific database engines. This is an optimization. local. 

default-storage-engine=INNODB

Unfortunately, configuration changes must be made to the database instance, not the database.

Ryan Ollos

unread,
Sep 3, 2018, 11:24:36 PM9/3/18
to Trac Users
On Mon, Sep 3, 2018 at 7:31 PM Mingxing Tian <tiante...@gmail.com> wrote:
RjOllos於 2018年9月4日星期二 UTC+8上午10時00分41秒寫道:

On Monday, September 3, 2018 at 6:58:08 PM UTC-7, Mingxing Tian wrote:
I confirm that the engine is already InnoDB, but it still detects errors.

0001.png

C:\Users\Administrator>trac-admin "D:\myproject" deploy "D:\myproject_deploy"
Error: The current storage engine is MyISAM. It must be InnoDB or NDB storage engine to support transactions.


Which version of Trac and which version of MySQL?

- Ryan 


I have found out that something went wrong. I changed the default engine of the entire database instance to InnoDB.

 
I think you should not check the engine of the entire instance, but one of the specific database engines. This is an optimization. local.

The engine for each table and the default engine are both checked:

It was implemented in #10993:

I don't see a way to set a persistent default storage engine for each database/schema. However, rather than requiring the MySQL instance default storage engine to be set (in the system-wide my.cnf configuration), we could possibly have a trac.ini configuration option to specify the storage engine and explicitly set the default for the session before creating the tables, or use the ENGINE option when creating tables:

I'm not sure of the best solution, but we do need better documentation in:

I will wait to see what Jun has to say before opening a new ticket.

default-storage-engine=INNODB

Unfortunately, configuration changes must be made to the database instance, not the database.

- Ryan
 

RjOllos

unread,
Sep 3, 2018, 11:29:46 PM9/3/18
to Trac Users


On Tuesday, September 4, 2018 at 3:24:36 AM UTC, RjOllos wrote:
I don't see a way to set a persistent default storage engine for each database/schema. However, rather than requiring the MySQL instance default storage engine to be set (in the system-wide my.cnf configuration), we could possibly have a trac.ini configuration option to specify the storage engine and explicitly set the default for the session before creating the tables, or use the ENGINE option when creating tables:

The proposed option would be [trac] mysql_storage_engine, or [mysql] storage_engine.

- Ryan

Jun Omae

unread,
Sep 4, 2018, 7:14:24 AM9/4/18
to trac-...@googlegroups.com
Trac requires that both default_storage_engine and
default_tmp_storage_engine are InnoDB.

MySQLConnector.to_sql() respecting the option for storage engine
sounds good but we're directly using "CREATE TEMPORARY TABLE ..." in
trac/upgrades/*.py without the to_sql() method. The "CREATE TEMPORARY
TABLE ..." uses storage engine configured in the
default_tmp_storage_engine.


--
Jun Omae <jun...@gmail.com> (大前 潤)

RjOllos

unread,
Sep 6, 2018, 6:18:33 PM9/6/18
to Trac Users
Thanks for the feedback. Summarized the discussion in:

- Ryan
Reply all
Reply to author
Forward
0 new messages