summaryrefslogtreecommitdiff
path: root/rt/UPGRADING.mysql
blob: 37b0dda423cb7845d808ef68763832ab6e1fe1f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
MySQL 4.1 and greater implemented changes in character set handling
that may result in RT failures: multiple login requests, binary attachments
breakage, image custom fields breakage and more.

In order to resolve this issue we've changed our schema for MySQL 4.1 and
greater versions.

If you're installing a new RT then you can skip this file.

If you're migrating from MySQL 4.0 to MySQL 4.1 and newer then you MUST follow
instructions at the bottom of this file.

If you're upgrading RT from versions prior to 3.8.0 then you MUST follow
instructions below even if your old RT was installed on MySQL 4.1 or newer.

=== Upgrading RT from versions prior to 3.8.0 ===

1) Backup RT's database. Use --default-character-set=binary if mysql
server is 4.1 or newer. Test that you can restore from this backup.

2) Follow instructions in the README file to step 7.

3) Apply changes described in step 7, but only up to version 3.7.87.

4) Apply the RT 3.8 schema upgrades. Included in RT is the script
etc/upgrade/upgrade-mysql-schema.pl that generates SQL queries to 
upgrade the database's schema. Run it:

    perl etc/upgrade/upgrade-mysql-schema.pl db user pass > queries.sql

If your mysql database is on a remote host, you can run the script
like this instead

    perl etc/upgrade/upgrade-mysql-schema.pl db:host user pass > queries.sql

5) Check sanity of the SQL queries yourself or consult with your DBA.

6) Apply the queries. Note that this step can take a while. It may require
additional space on your hard drive comparable with size of your tables.

    mysql -u root -p rt3 < queries.sql

NOTE that 'rt3' is the default name of the RT database, change it in the
command above if you're using a different name.

This step should not produce any errors or warnings. If you see any, restore
your database from the backup you made at step 1) and send a report to the
rt-users@lists.bestpractical.com mailing list.

7) Continue from step 7 in the README and apply other upgrades and 
follow the remaining steps.

8) Test everything. The most important parts you have to test:
* binary attachments, like docs, PDFs, and images
* binary custom fields
* everything that may contain characters other than ASCII

=== Migrating from MySQL 4.0 to MySQL 4.1 and newer ===

Upgrading both MySQL and RT at the same time is a bad idea. The process becomes
more complicated, more time consuming, greater chance to fail, and much harder
to debug.

It's better to perform the upgrade in two steps. First upgrade MySQL from 4.0
to 4.1 or newer. Remember the following:

* Don't use utf8 as MySQL's character set. This is the default in some
  Linux distributions.
* import/export MySQL dumps using binary character set.

When you're sure that everything is fine, you may upgrade RT using the
instructions above.

If you still want to upgrade MySQL and RT simultaneously, then you can
do the following:

1) Install a new RT on MySQL 4.1 or newer.
2) Test that this new clean RT works on this new database.
3) Dump the database from MySQL 4.0.
4) Configure MySQL 4.1 and newer to use Latin1 as default character set
   everywhere.
5) Import the dump into the new MySQL server, replacing your empty database you
   created at step 1, use --default-character-set=binary on restore.
6) At this point you have RT 3.8.x code base using an old database. You can
   upgrade RT using the instructions above.