JIRA 3.9 Upgrade Guide
Upgrading from JIRA 3.8.1 to 3.9
Please follow the JIRA general upgrade instructions. Additionally, please note the following:
In this version, there has been a change to the database which may cause problems for some customers.
The Recommended Upgrade Method
If you follow the recommended export/import upgrade procedure you should not experience any problems!
Pointing JIRA 3.9 at an existing, non-empty database
Some customers have a good reason for not following the recommended upgrade method. Using this method may result in database errors in your logs. You can avoid this if you modify your table structure manually, but the procedure is different depending on whether you have already started JIRA.
To avoid this, BEFORE you upgrade JIRA using this method, you can just drop the qrtz_cron_triggers table. This table has not been used by JIRA before 3.9, so it should be empty.
If you have ALREADY started JIRA 3.9 using your existing database, you may see the following log messages when JIRA starts up:
2007-04-18 15:31:53,345 main WARN [core.entity.jdbc.DatabaseUtil] Column "CRON_EXPERSSION" of table "public.qrtz_cron_triggers" of entity "QRTZCronTriggers" exists in the database but has no corresponding field
2007-04-18 15:31:53,347 main WARN [core.entity.jdbc.DatabaseUtil] Entity "QRTZCronTriggers" has 3 fields but table "public.qrtz_cron_triggers" has 4 columns.
The reason for this is that we have incorrectly changed a column in the qrtz_cron_triggers
table. The intention was to fix a misspelling, but all we did was remove an underscore ("_")! The old column name is "CRON_EXPERSSION". The new column name is "CRONEXPERSSION". Note that both columns spell the word "expression" incorrectly.
To remove the error message, you must remove the old column as it is redundant. This column will not contain any data. The following table shows all columns in the qrtz_cron_triggers table. Columns that should be present are in green and columns that should be deleted are in red.
Keep |
Keep |
Keep |
Delete |
---|---|---|---|
ID |
TRIGGER_ID |
CRONEXPERSSION |
CRON_EXPERSSION |
To delete the column, you can use SQL, but this may be slightly different between databases. Here's how it might look:
alter table qrtz_cron_triggers drop column CRON_EXPERSSION;
The data in this table
If you have users who have subscribed to issue filters, note that existing SimpleTriggers (time intervals) will be automatically converted into CronTriggers during the JIRA upgrade. In some cases, there may not be an exact mapping of time intervals to Cron Expressions, and approximations will be made (e.g. 'Every 5 weeks' will be converted to 'Once a month'). If this happens, the JIRA upgrade process will send an email to the user to inform them of the new schedule.
Upgrading from JIRA 3.8 and earlier
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.