GNU Info

Info Node: (mysql.info)Upgrading-from-3.20

(mysql.info)Upgrading-from-3.20


Next: Upgrading-to-arch Prev: Upgrading-from-3.21 Up: Upgrade
Enter node , (file) or (file)node

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'.


automatically generated by info2www version 1.2.2.9