Hi there,

 

I have been testing the upgrade of our (originally Debian Based) RT 3.6.5 
installation to RT 3.8 and found two bugs in the process:

 

First, the script generating the necessary code to convert the Database from 
MySQL 4.0 to 4.1 and newer produces corrupt SQL at least in my case here. It 
has several occurrences of constructs like this:

 

                ALTER TABLE Groups MODIFIY Domain VARBINARY(64) NOT NULL 
DEFAULT NULL;

 

Note, that the NOT NULL DEFAULT NULL contradicts itself, MySQL 5.0.51a (Debian) 
at least rejects it as a syntax error. When changing all of the above 
occurrences in the database to "NULL DEFAULT NULL" everything works. This seems 
as the best alternative to me, please correct me if I am wrong. "NOT NULL" in 
itself will produce errors, changing the default away from NULL might have 
consequences in RT itself.

 

I do not have a patch here, as I have fixed the sql.queries script directly 
with vi.

 

The second problem I have tested so far only with the RT Standalone server, I 
cannot say anything (yet) for other ways to run RT as I'm still in the process 
of testing everything.

 

At least Debian MySQL 5.0.51a does by default initialize all connections in 
latin1 mode. So after converting the Database to correct UTF-8, MySQL does 
automatically convert any columns known as UTF-8 into the default connection 
charset latin1. This leads to all broken non-ASCII Chars all over the site 
except the Attachments (where RT itself appearantly does the conversion 
handling, as this is a BINARY field).

 

I was unable to change MySQLs default behavior using my.cnf - this isn't 
sensible anyway, as this could have side effects with other applications that 
do make any implicit assumption about the connection character set.

 

After some testing I found an easy way (for MySQL) to actually enforce the 
usage of UTF-8 as connection charset inside RT by patching the connection 
startup in Handle.pm like this:

 

--- /home/nehmer/src/rt-3.8.0/lib/RT/Handle.pm  2008-06-14 00:06:41.000000000 
+0200

+++ Handle.pm   2008-07-24 09:33:14.208864208 +0200

@@ -113,6 +113,11 @@

         );

 

     $self->dbh->{'LongReadLen'} = RT->Config->Get('MaxAttachmentSize');

+

+    if ( RT->Config->Get('DatabaseType') eq 'mysql' ) {

+        $self->dbh->do("set character set utf8");

+        $self->dbh->do("set names utf8");

+    }

 }

 

 =head2 BuildDSN

 

Here again I am not sure if this is the best solution (I would have assumed 
that DBI does this automagically when Perl's in UTF-8 mode), but it most 
certainly does work. So far I could not find another working solution. Any 
default character set I define in my.cnf seems to have no effect at this point, 
as well as the Locale I use when starting up the Standalone server (I was 
testing it with both POSIX and de_DE.UTF8.

 

 

I would appreciate some feedback on these two patches, whether they are ok or 
if they are additional points I might have missed. Especially, since so far I 
have only had time for rudimentary testing.

 

 

Apart from that I'd like to say: Good Work! RT 3.8 looks really promising. 
Can't wait for 3.8.1, which we'll most probably take into production when it 
comes out. 

 

Yours,
Torben Nehmer

-------
Torben Nehmer
Diplom Informatiker (FH)
Business System Developer

CANCOM Deutschland GmbH
Messerschmittstr. 20
89343 Scheppach
Germany

Tel.: +49 8225 - 996-1118
Fax: +49 8225 - 996-41118
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> 
www.cancom.de <http://www.cancom.de> 

CANCOM Deutschland GmbH
Sitz der Gesellschaft: Jettingen-Scheppach
HRB 10653 Memmingen
Geschäftsführer: Paul Holdschik, Christian Linder

Diese E-Mail und alle mitgesendeten Dateien sind vertraulich und ausschließlich 
für den Gebrauch durch den Empfänger bestimmt! 
This e-mail and any files transmitted with it are confidential intended solely 
for the use of the addressee!

 

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


Discover RT's hidden secrets with RT Essentials from O'Reilly Media. 
Buy a copy at http://rtbook.bestpractical.com

Reply via email to