Migration Issues

MySQL

Old server was running MySQL 4.0.13-log

JOIN syntax

On the old server LEFT JOIN tablea, tableb was valid. However, on the new server multiple tables must be enclosed in parentheses. On the new server the code must be LEFT JOIN (tablea, tableb)

PASSWORD()

PASSWORD() should never be used. It is used internally by MySQL. On the new server the password algorithm has changed. As a temporary measure, OLD_PASSWORD() will return the same string as PASSWORD() on the old server.

FLOAT Column Types

Despite what the manual says, the old server could hold values of 1750.00 for float(5,2) fields. On the new server, the values were changed to 999.00! The solution is to redefine the fields as DECIMAL(6,2).

PERL

Old server was running PERL 5.8.0

$#{@$ref_name}

On the old server $ref_name->[$#{@$ref_name] would be acceptable when use strict is in effect. It fails on the new server with an error similar to Can't use string ("4") as an ARRAY ref while "strict refs".

Fix

To fix the problem, change $ref_name->[$#{@$ref_name}] to $ref_name->[$#{ $ref_name}]

PHP

Old server was running PHP4.2.3

array_reduce()

On the old server array_reduce(array,callback,"text") passed "text" to the callback routine, but on the new server "text" is converted to an integer before being passed to the callback routine. There is ongoing development of PHP and the treatment of the third parameter of array_reduce() may change in the future.

First variable passed to callback routine based on value of 3rd parameter of array_reduce
Calling Sequence Old Server New Server
array_reduce(array,callback) Nothing passed to callback routine NULL
array_reduce(array,callback,NULL) NULL 0
array_reduce(array,callback,"") "" 0
array_reduce(array,callback,"2=2") "2=2" 2