Upgrading from Version 3.20 to Version 3.21
-------------------------------------------
If you are running a version older than Version 3.20.28 and want to
switch to Version 3.21, you need to do the following:
You can start the `mysqld' Version 3.21 server with `safe_mysqld
--old-protocol' to use it with clients from a Version 3.20 distribution.
In this case, the new client function `mysql_errno()' will not return
any server error, only `CR_UNKNOWN_ERROR' (but it works for client
errors), and the server uses the old `password()' checking rather than
the new one.
If you are *NOT* using the `--old-protocol' option to `mysqld', you
will need to make the following changes:
* All client code must be recompiled. If you are using ODBC, you
must get the new *MyODBC* 2.x driver.
* The script `scripts/add_long_password' must be run to convert the
`Password' field in the `mysql.user' table to `CHAR(16)'.
* All passwords must be reassigned in the `mysql.user' table (to get
62-bit rather than 31-bit passwords).
* The table format hasn't changed, so you don't have to convert any
tables.
MySQL Version 3.20.28 and above can handle the new `user' table format
without affecting clients. If you have a MySQL version earlier than
Version 3.20.28, passwords will no longer work with it if you convert
the `user' table. So to be safe, you should first upgrade to at least
Version 3.20.28 and then upgrade to Version 3.21.
The new client code works with a 3.20.x `mysqld' server, so if you
experience problems with 3.21.x, you can use the old 3.20.x server
without having to recompile the clients again.
If you are not using the `--old-protocol' option to `mysqld', old
clients will issue the error message:
ERROR: Protocol mismatch. Server Version = 10 Client Version = 9
The new Perl `DBI'/`DBD' interface also supports the old `mysqlperl'
interface. The only change you have to make if you use `mysqlperl' is
to change the arguments to the `connect()' function. The new arguments
are: `host', `database', `user', `password' (the `user' and `password'
arguments have changed places). Note:Perl `DBI' Class.
The following changes may affect queries in old applications:
* `HAVING' must now be specified before any `ORDER BY' clause.
* The parameters to `LOCATE()' have been swapped.
* There are some new reserved words. The most notable are `DATE',
`TIME', and `TIMESTAMP'.