On init the DefaultJDBCAdapter.doCreateTables-method is executed. This provides the tables needed for ActiveMQ in persistent mode.
The createSchemaStatements are executed within one SQL Statement.
When one of the createSchemaStatements throws an SQLException (table already exists) the SQL Statement's transaction is aborted and all following createSchemaStatements are ignored.
This is unwanted behaviour as the comment on the code block states that new statements like for example 'ALTER TABLE' (introduced in new versions of activemq) should be executed if the tables already exist.
We had this issue when adding an extra createSchemaStatement for a JobScheduler table.