Unable to start Bamboo: Bamboo DB must use InnoDB table engine
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Problem
After upgrading from a pre-5.10 version of Bamboo to a version at or above 5.10, Bamboo does not start up and the following appears in the catalina.out
log
2016-04-29 13:14:44,550 FATAL [localhost-startStop-1] [DefaultBootstrapManager] Pre-bootstrap upgrade tasks failed
com.atlassian.upgrade.UpgradeException: Pre-bootstrap validation tests failed: [Task for build 51012 failed:, Bamboo DB must use InnoDB table engine.]
at com.atlassian.bamboo.setup.DefaultBootstrapManager.performPersistenceUpgrade(DefaultBootstrapManager.java:354)
at com.atlassian.config.bootstrap.DefaultAtlassianBootstrapManager.init(DefaultAtlassianBootstrapManager.java:77)
at com.atlassian.bamboo.setup.BootstrapLoaderListener.contextInitialized(BootstrapLoaderListener.java:117)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Diagnosis
Environment
- Bamboo 5.10 or newer in combination with a MySQL database
Diagnostic Steps
To see which database engine is in use, connect to your Bamboo database in MySQL and run the following query:
SHOW TABLE STATUS;
The Engine
column from the output of this command will show the engine in use. If you see MyISAM
in this column then this confirms that your MySQL database is using an unsupported engine
Cause
Bamboo requires that all tables in the Bamboo database use the InnoDB storage engine. In versions 5.10 and above this support is enforced and Bamboo will not start if it detects an unsupported engine in use.
Resolution
Update your database to set the storage engine to InnoDB
The resolution of this problem requires changes to the Bamboo database. Before applying the solution ensure you have full working backups of your database.
- Shut down Bamboo
Update each table's engine using a query like
ALTER TABLE <table_name> ENGINE=InnoDB;
The following query will generate the required
ALTER TABLE
statements for each table in your database: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;
Change the default storage engine for your database so new tables are created appropriately
SET GLOBAL storage_engine='InnoDB';
- Start Bamboo and the upgrade should complete successfully.