DB upgrade for RT 3.8 fails

Hi,

I am testing an upgrade on FreeBSD of RT 3.6.7 to RT 3.8.1 and I am
getting an error when attempting to upgrade the MySQL DB.

I am running the command:

rt-setup-database --dba=root --action upgrade

And after answering the various questions it starts to execute then
bombs out with this error:

Proceed [y/N]:y
Processing 3.7.1
Now inserting data
Processing 3.7.3
Now populating database schema.
[Wed Jan 14 17:09:06 2009] [crit]: DBD::mysql::st execute failed:
Table ‘Attachments’ already exists at
/usr/local/lib/perl5/site_perl/5.8.8/RT/Handle.pm line 470.
(/usr/local/lib/perl5/site_perl/5.8.8/RT.pm:379)
DBD::mysql::st execute failed: Table ‘Attachments’ already exists at
/usr/local/lib/perl5/site_perl/5.8.8/RT/Handle.pm line 470.

Can anyone help? I couldn’t see any related problems searching via google :S

thanks for any replies!

Andy.

This message was sent using IMP, the Internet Messaging Program.

Anybody? :S

Without any other clues, and out of curiosity, and not really
following exactly what is supposed to be the correct upgrade procedure
:stuck_out_tongue: I tried the following:

run schema.mysql-4.0-4.1.pl and apply the generate SQL
go to each directory in the source under etc/upgrade and apply any
schema.mysql files to my DB

After this on the face of it I have a working RT3.8, but I dont really
know if this is a robust way of upgrading and how likely I am to
encounter problems later :S For example I complete ignored all the
“content” files as I dont know what they are for :S

thanks, Andy.

Quoting Andy Smith a.smith@ukgrid.net:

Hi,

I am testing an upgrade on FreeBSD of RT 3.6.7 to RT 3.8.1 and I
am getting an error when attempting to upgrade the MySQL DB.

I am running the command:

rt-setup-database --dba=root --action upgrade

And after answering the various questions it starts to execute then
bombs out with this error:

Proceed [y/N]:y
Processing 3.7.1
Now inserting data
Processing 3.7.3
Now populating database schema.
[Wed Jan 14 17:09:06 2009] [crit]: DBD::mysql::st execute failed:
Table ‘Attachments’ already exists at
/usr/local/lib/perl5/site_perl/5.8.8/RT/Handle.pm line 470.
(/usr/local/lib/perl5/site_perl/5.8.8/RT.pm:379)
DBD::mysql::st execute failed: Table ‘Attachments’ already exists at
/usr/local/lib/perl5/site_perl/5.8.8/RT/Handle.pm line 470.

Can anyone help? I couldn’t see any related problems searching via google :S

thanks for any replies!

Andy.


This message was sent using IMP, the Internet Messaging Program.

This message was sent using IMP, the Internet Messaging Program.

Andy Smith wrote:

Anybody? :S

Without any other clues, and out of curiosity, and not really
following exactly what is supposed to be the correct upgrade procedure
:stuck_out_tongue: I tried the following:

run schema.mysql-4.0-4.1.pl and apply the generate SQL
go to each directory in the source under etc/upgrade and apply any
schema.mysql files to my DB

After this on the face of it I have a working RT3.8, but I dont really
know if this is a robust way of upgrading and how likely I am to
encounter problems later :S For example I complete ignored all the
“content” files as I dont know what they are for :S

The robust way of upgrading is documented in README/UPGRADE files.
Look for the script which applies etc/upgrade files.

Regards
Racke

LinuXia Systems => http://www.linuxia.de/
Expert Interchange Consulting and System Administration
ICDEVGROUP => http://www.icdevgroup.org/
Interchange Development Team

Hi Racke,

that was the subject of my first post to the list to which no one
replied, I attempted to follow the infro in README and UPGRADING and
UPGRADING.mysql and all i got left with was an error message and a
failed upgrade :(.
My second mail was in desperation (as stated), I know that isnt the
correct way to do it but the correct way didnt work and no one has
suggested any fixes to this :frowning:

thanks, Andy.

Quoting racke at linuxia.de:

The robust way of upgrading is documented in README/UPGRADE files.
Look for the script which applies etc/upgrade files.

Regards
Racke

This message was sent using IMP, the Internet Messaging Program.

Andy,

I followed these steps, following the UPGRADING UPGRADING.mysql docs and
other messages in this list, in particular, Tim Cutts and Ruslan posts[1]:

Set up a new RT box, install the new version of MySQL you want to use, and

install RT 3.8.1.

Dump of your production MySQL instance, and load it into the new MySQL

database.

Follow the UPGRADING.mysql document if you’re going to upgrade your mysql

server or move RT DB to a newer mysql server.

  1. cd /path/to/rt-3.8.1-src/
  2. ./sbin/rt-setup-database --dba root --action upgrade # Select option to
    go only as far as version 3.8.0
  3. rm -fr /var/run/rt38/mason_data/obj/ && apachectl restart
  4. perl ./etc/upgrade/schema.mysql-4.0-4.1.pl rt3 root > sql.queries # Run
    the MySQL upgrade script, as detailed in UPGRADING.mysql, and apply the SQL
    statements it wants you to make. This takes a while.
  5. mysql -u root -p rt3 < sql.queries
  6. ./sbin/rt-setup-database --dba root --action upgrade # Run
    “/opt/rt3/sbin/rt-setup-database --action upgrade” again for the last small
    changes from 3.8.0 to 3.8.1

Despite the fact that we did have a problem in our database in the step 5
above, I’ve sent the steps above to this list a few days ago and it seems
these are ok, as nobody - including Ruslan - told me otherwise.

Reference:
[1]
http://www.mail-archive.com/rt-users@lists.bestpractical.com/msg16831.html

Best regards,

Alex

Hi Alex,

thanks a lot for your reply. I had tried more or less to do this
before, although I hadn’t split the upgrade section in to two steps,
doing first until 3.8.0 then the rest.
I just tried running this, and I get the same error as before when
attempting the first db upgrade (your step 2) :frowning:

[Thu Jan 15 13:15:22 2009] [crit]: DBD::mysql::st execute failed:
Table ‘Attachments’ already exists at
/usr/local/lib/perl5/site_perl/5.8.8/RT/Handle.pm line 470.
(/usr/local/lib/perl5/site_perl/5.8.8/RT.pm:379)
DBD::mysql::st execute failed: Table ‘Attachments’ already exists at
/usr/local/lib/perl5/site_perl/5.8.8/RT/Handle.pm line 470.

So im still stumped :frowning:

thanks, Andy.

This message was sent using IMP, the Internet Messaging Program.

Hi All,

OK I think I have a solution to my problem which I hope results in
a correctly upgrade database. The last piece of the puzzle, is what
are the “content” files and what do you need to do with them? Well I
guessed that you are meant to do this:

rt-setup-database --action insert --datafile
./etc/upgrade/3.8.1/content --dba root

for each file (in order).

So my end solution would be:

  1. install RT 3.8 to new dir
  2. going thro each directory in order in etc/upgrade apply the files
    as necessary until 3.8.0. schema files are applied by redirecting into
    a mysql session and contect files are loaded with rt-setup-database
    (as above).
  3. run schema.mysql-4.0-4.1.pl and apply the resulting SQL to the database
  4. apply the final directories in etc/upgrade as above to take to
    version 3.8.1

Bit more of an effort than a single command, but it seems good to me
(ignorance is bliss :wink: ).

thanks, Andy.

This message was sent using IMP, the Internet Messaging Program.

Hi All,

OK I think I have a solution to my problem which I hope results in
a correctly upgrade database. The last piece of the puzzle, is what
are the “content” files and what do you need to do with them? Well I
guessed that you are meant to do this:

rt-setup-database --action insert --datafile
./etc/upgrade/3.8.1/content --dba root
for each file (in order).

So my end solution would be:

  1. install RT 3.8 to new dir
  2. going thro each directory in order in etc/upgrade apply the files
    as necessary until 3.8.0. schema files are applied by redirecting into
    a mysql session and contect files are loaded with rt-setup-database
    (as above).
  3. run schema.mysql-4.0-4.1.pl and apply the resulting SQL to the database
  4. apply the final directories in etc/upgrade as above to take to
    version 3.8.1

Bit more of an effort than a single command, but it seems good to me
(ignorance is bliss :wink: ).

Those are exactly the instructions for 3.8.0. I don’t know about 3.8.1.
In 3.8.2, you can upgrade the database via two steps. First, upgrading
using rt-setup-database and inputting the version you want to stop at, then
completing the steps revolving around schema.mysql-4.0-4.1.pl.

Is there any reason you are not upgrading to 3.8.2? There are many bug
fixes in 3.8.2 and many features/shortcuts that existed in 3.6.x but were
missing in 3.8.0 and 3.8.1. In my opinion, you don’t want to be running
3.8.1…

James

Hi James,

ok, well thats nice I managed to get to the instructions for 3.8
using a bit of guesswork :P.

The only reason Im on 3.8.1 is that it is the current ports version in
FreeBSD. If its worth waiting for 3.8.2 I’m happy to wait, Im not in
any hurry to upgrade.

Thanks for the info,

Andy.

Quoting jmoseley@corp.xanadoo.com:

Those are exactly the instructions for 3.8.0. I don’t know about 3.8.1.
In 3.8.2, you can upgrade the database via two steps. First, upgrading
using rt-setup-database and inputting the version you want to stop at, then
completing the steps revolving around schema.mysql-4.0-4.1.pl.

Is there any reason you are not upgrading to 3.8.2? There are many bug
fixes in 3.8.2 and many features/shortcuts that existed in 3.6.x but were
missing in 3.8.0 and 3.8.1. In my opinion, you don’t want to be running
3.8.1…

James

This message was sent using IMP, the Internet Messaging Program.

Andy Smith a.smith@ukgrid.net wrote:

Hi James,

ok, well thats nice I managed to get to the instructions for 3.8
using a bit of guesswork :P.

The only reason Im on 3.8.1 is that it is the current ports version in
FreeBSD. If its worth waiting for 3.8.2 I’m happy to wait, Im not in
any hurry to upgrade.

Thanks for the info,

For what it’s worth, although I too use yum/rpm management on my Redhat
boxes to install/upgrade almost everything, I find that using packages to
install/upgrade RT problematic. It’s much easier (for me) to upgrade from
source, especially since you really aren’t compiling anything. This goes
for Horde/Imp as well (which it appears you are using).

As it is right now, you are only a few steps frm getting RT 3.8.2 going
from source. If you’ve installed the 3.8.1 from BSD ports, you are only
two updated Perl modules away from using 3.8.2. If those updated modules
exist in ports, great. If not, use Perl/CPAN to upgrade them.

The other steps are to download the source, perform a configure operation,
and make install.

The configure operation would look something like:

$ ./configure --prefix=/opt/rt3.8.2 --with-web-user=apache
–with-web-group=apache --with-mysql --with-web-handler=fastcgi

Make install would then put the actual files in /opt/rt3.8.2. You can copy
your RT_SiteConfig.pm file into the new directory along with any local
changes. Then create a soft link for /opt/rt3 to /opt/rt3.8.2, or however
your directory structure is laid out. Then complete the mysql upgrade
steps.

After running configure, do a ‘make testdeps’ to see what modules you’re
missing, need upgrading, etc.

James

Hi James,

yes, Im not averse to compiling software from source, but actaully
having not been using it for very long (I was on various different
Unixs before) Ive been very impressed with FreeBSD ports (no probs
with Horde/IMP BTW). Much more so than Linux tools such as yum and
apt-get which I dont really trust (tho that may be cos I dont know
them sufficiently well). Anyway thats just a by the by in case you or
anyone else every facies trying FreeBSD and ports package management ;).

TBH Im happy to wait for the ports, more or less as a matter of good
practice so that its easier to track whats installed on servers,
manage package dependencies, and also portaudit is a great tool for
checking your system against known vulnarabilites (might not cover
100% of issues but handy). Although in the same moment I accept ports
or other package management systems arent always the best way to
install software, when you are dealing with a lot of systems and a lot
of programs the good outweighs the bad (especially with ports :wink: ),

cheers Andy.

Quoting jmoseley@corp.xanadoo.com:

For what it’s worth, although I too use yum/rpm management on my Redhat
boxes to install/upgrade almost everything, I find that using packages to
install/upgrade RT problematic. It’s much easier (for me) to upgrade from
source, especially since you really aren’t compiling anything. This goes
for Horde/Imp as well (which it appears you are using).

As it is right now, you are only a few steps frm getting RT 3.8.2 going
from source. If you’ve installed the 3.8.1 from BSD ports, you are only
two updated Perl modules away from using 3.8.2. If those updated modules
exist in ports, great. If not, use Perl/CPAN to upgrade them.

This message was sent using IMP, the Internet Messaging Program.

Hi James,

yes, Im not averse to compiling software from source, but actaully
having not been using it for very long (I was on various different
Unixs before) Ive been very impressed with FreeBSD ports (no probs
with Horde/IMP BTW). Much more so than Linux tools such as yum and
apt-get which I dont really trust (tho that may be cos I dont know
them sufficiently well). Anyway thats just a by the by in case you or
anyone else every facies trying FreeBSD and ports package management ;).

TBH Im happy to wait for the ports, more or less as a matter of good
practice so that its easier to track whats installed on servers,
manage package dependencies, and also portaudit is a great tool for
checking your system against known vulnarabilites (might not cover
100% of issues but handy). Although in the same moment I accept ports
or other package management systems arent always the best way to
install software, when you are dealing with a lot of systems and a lot
of programs the good outweighs the bad (especially with ports :wink: ),

Hi Andy,

Agreed! We also run rt over FreeBSD since rt-1.0.7, and we rely
on the ports tools to keep track of third-party packages in our servers,
otherwise it would be an unbearable task, once that mantaining our
dept. IT infrasctructure is not our mission.

I’ve contacted the www/rt38 port mantainer. Altough he didn’t gave me
a schedule, he told me that the port update is his todo list. I also am
eager waiting the port for rt-3.8.2. :frowning:

Best regards,

Alex