Corrupt Attachments.. but wait

I’m at RT 3.8.2, running on a Fedora core 10 system with perl 5.10.0 and
mysql 5.0.84.

Ok, ok, I know you all will pound me over the head with suggestions to
run UPGRADING.mysql and changing Attachments.Contents to a longblob and
setting default character sets to latin1. Maybe I am just not getting
something, and maybe I need to be pounded… I searched and saw a bunch
of "you didn’t run UPGRADING, go run it… thanks that fixed it"
messages… but… that ain’t workin for me.

Some binary attachments are getting corrupt. Not PDFs. Not
PNGs/JPGs/GIFs. It seems only Office type documents are impacted (I
suspect all uncommon binary types). I ran UPGRADING.mysql until all it
did was create ALTER statements to set the default character set. And
yes, I applied the output to my database. without errors. Yes, each time
I made a change, I restarted RT3 and restarted the database to avoid
caching issues.

Interesting points:

  1. UPGRADING makes a big deal about setting default character sets to
    latin1 (and NOT to utf8), but then produces a bunch of ALTER statements
    that set the default encoding to utf8… did I maybe do something wrong
    there?
  2. The MIME types in the database for the corrupted attachments are
    text/plain. All others are as appropriate for the type (e.g. image/jpg,
    etc)… could this be a clue?
  3. Since I used the RPM to install RT3, I ran UPGRADING only after the
    fact. Could this have caused issues?

Does anyone have any suggestions? Did I not look in the right place for
what I need? Thanks for the help!

Here is my create table line for attachments (I just now forced my
character_set_client to be latin1 and just noticed the default set below
is latin1; it has been utf8 all day… still, no Office document
attachments are getting through with readability intact).

| Attachments | CREATE TABLE Attachments (
id int(11) NOT NULL auto_increment,
TransactionId int(11) NOT NULL default ‘0’,
Parent int(11) NOT NULL default ‘0’,
MessageId varchar(160) default NULL,
Subject varchar(255) default NULL,
Filename varchar(255) default NULL,
ContentType varchar(80) default NULL,
ContentEncoding varchar(80) default NULL,
Content longblob,
Headers longtext,
Creator int(11) NOT NULL default ‘0’,
Created datetime default NULL,
PRIMARY KEY (id),
KEY Attachments2 (TransactionId),
KEY Attachments3 (Parent,TransactionId)
) ENGINE=InnoDB AUTO_INCREMENT=7620 DEFAULT CHARSET=latin1 |