Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Next challenges

Recent achievements

  • Global
  • Personal


  • Give kudos
  • Received
  • Given


  • Global

Trophy case

Kudos (beta program)

Kudos logo

You've been invited into the Kudos (beta program) private group. Chat with others in the program, or give feedback to Atlassian.

View group

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Batch email notification not sending email and how to restore missing tables Edited

Hmm, didn't mean to create a new question. This is also added to

I'm having the issue that batching email notifications does not work. Sending the separate emails is working fine. I did some debugging and my conclusion is that this is due to missing database tables, as I found in the jira log entries like:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'AO_733371_EVENT_RECIPIENT' doesn't exist.

I recently upgraded MariaDB to MySQL. I don't know if this is related.

Existing table:

  • AO_733371_EVENT

Tables that do not exist within the MySQL database:


Has anyone a clue how to create these 2 missing tables?

2 answers

1 accepted

2 votes
Answer accepted
Andy Heinzer Atlassian Team Sep 06, 2019

Hi RoBo,

I understand that you recently switch the backend database that Jira is using from mariadb to Mysql, and in addition to this database migration, it seems that you are missing at least two tables that are needed for the batch notification feature.  This feature was introduced in Jira 8.0, more details in Jira Software 8.0 release notes.

What I suspect might have happened is that you might not have granted a MySQL 5.7.x database the proper permissions when making this switch.  There was a change that MySQL rolled out in 5.7.6 to require a REFERENCES permission.  This is one that creates foreign key constraints as well IIRC.   If it happens that you created the MySQL database without all the needed permissions, Jira could have been unable to create the new tables as needed during the upgrade.  There are some more details about the permission I am thinking of here in com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: REFERENCES command denied to user.


What I would recommend would be to first make sure that the database Jira is using is setup as expected per Connecting Jira applications to MySQL 5.7.  If we can confirm that part is setup correctly, then we can look to try to correct this failed upgradetask.   It is possible that simply restarting Jira after correcting the database permissions could correct this.  But if not, then it might be that forcing an upgrade of Jira once more could trigger another attempt to run this upgradetask.   I would not want to try to create these manually, although that might work.  I'd prefer to try to let Jira itself create this table in the database (provided we know for sure it has the correct permissions needed to do so.)


If I have misunderstood your situation, my apologies, please let me know more details about the specific version of Jira and MySQL you are currently using and I will try to offer more help here.


Hello Andy, you've nailed this issue to the spot! Although this sounds quite logical, I was not able to relate that myself somehow. Very much appreciated.
The table is auto-created and being filled. So good self healing job there Atlassian!
(however a warning for incorrect database permission scheme would have been appreciated here)

Argh.. I've updated Jira from 8.3.2 to 8.4.1 and now the option '> System > Batching email notifications' is gone???

Ha, that one was rather easy: The following system plugins had to be enabled:

Jira inform - batchers
Jira inform - batching plugin

Having the same Problem with our Jira Server.

But we use a MS SQL Server and it never worked, and we did not do a migration.

The Log says:

020-01-16 17:22:56,778+0100 plugin-transaction-0 INFO      [c.a.jira.plugin.PluginTransactionListener] [plugin-transaction] numberStartEvents:573, numberEndEvents:573, numberSendEvents:369, numberEventsInTransactions:11830, numberOfPluginEnableEvents:274
2020-01-16 17:23:07,672+0100 Caesium-1-3 ERROR ServiceRunner     [c.a.j.p.inform.performance.MeasurementWorkerFactory] Exception occured
com.querydsl.core.QueryException: Caught SQLServerException for select "AO_733371_EVENT"."ID", "AO_733371_EVENT"."EVENT_TYPE", "AO_733371_EVENT"."USER_KEY", "AO_733371_EVENT"."ACTION", "AO_733371_EVENT"."ACTION_ID", "AO_733371_EVENT"."EVENT_BUNDLE_ID", "AO_733371_EVENT"."CREATED" from "null"."AO_733371_EVENT" "AO_733371_EVENT" where exists (select "AO_733371_EVENT_RECIPIENT"."ID" from "null"."AO_733371_EVENT_RECIPIENT" "AO_733371_EVENT_RECIPIENT" where "AO_733371_EVENT_RECIPIENT"."EVENT_ID" = "AO_733371_EVENT"."ID" and "AO_733371_EVENT_RECIPIENT"."STATUS" = ? and "AO_733371_EVENT_RECIPIENT"."CONSUMER_NAME" = ? and "AO_733371_EVENT_RECIPIENT"."SEND_DATE" <= ?) and ("AO_733371_EVENT"."EVENT_TYPE" in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)) and "AO_733371_EVENT"."ID" >= ? order by "AO_733371_EVENT"."ID" asc offset ? rows fetch next ? rows only
 at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(
 at com.querydsl.sql.Configuration.translate(
 at com.querydsl.sql.AbstractSQLQuery.fetch(
 at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(
 at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.executeInternal(
 at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.lambda$execute$0(
 at com.atlassian.jira.database.DatabaseAccessorImpl.runInManagedTransaction(
 ... 2 filtered
 at java.lang.reflect.Method.invoke(
 at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(
 at com.sun.proxy.$Proxy401.runInManagedTransaction(Unknown Source)
 ... 2 filtered
 at java.lang.reflect.Method.invoke(
 at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(
 at com.sun.proxy.$Proxy401.runInManagedTransaction(Unknown Source)
 at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.runInStartedOrExistingTransaction(
 at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.execute(
 at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.execute(
 at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(
 at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInTransaction(
 ... 3 filtered
 at java.lang.reflect.Method.invoke(
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
 at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(
 at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(
 at com.sun.proxy.$ Source)
 at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.lambda$searchEvents$10(
 at com.atlassian.jira.plugins.inform.performance.MeasurementWorkerFactory$1.measure(
 at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.searchEvents(
 at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.lambda$notifyUsers$1(
 at com.atlassian.jira.plugins.inform.performance.MeasurementWorkerFactory$1.measure(
 at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.notifyUsers(
 at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.lambda$runJob$0(
 at com.atlassian.jira.plugins.inform.performance.MeasurementWorkerFactory$1.measure(
 at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.runJob(
 at com.atlassian.jira.plugins.inform.batching.cron.ConditionalJobRunner.runJob(
 at com.atlassian.jira.plugins.inform.batching.cron.ConditionalJobRunner.runJob(
 at com.atlassian.jira.plugins.inform.batching.cron.OncePerClusterJobRunner.runJob(
 at com.atlassian.scheduler.core.JobLauncher.runJob(
 at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(
 at com.atlassian.scheduler.core.JobLauncher.launch(
 at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(
 at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(
 at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJobWithRecoveryGuard(
 at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(
 at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(
 at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(
Caused by: Ung�ltiger Objektname "null.AO_733371_EVENT".
 at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(
 at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(
 at com.atlassian.jira.ofbiz.sql.PreparedStatementWrapper.executeQuery(
 at com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.lambda$executeQuery$5(
 at com.atlassian.diagnostics.internal.platform.monitor.db.DefaultDatabaseDiagnosticsCollector.recordExecutionTime(
 at com.atlassian.jira.diagnostic.connection.DatabaseDiagnosticsCollectorDelegate.recordExecutionTime(
 at com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.executeQuery(
 at com.querydsl.sql.AbstractSQLQuery.fetch(
 ... 65 more

Suggest an answer

Log in or Sign up to answer

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you