2.5.5 Модернизация с версии 3.20 до версии 3.21
Если вы работаете с версией выше, чем 3.20.28, и хотите перейти к 3.21, то
необходимо сделать следующее:
Можно запустить сервер mysqld
версии 3.21 с опцией safe_mysqld
--old-protocol
, чтобы использовать его с клиентами из дистрибутива версии
3.20. В этом случае функция mysql_errno()
нового клиента не возвращает
никаких серверных ошибок, кроме CR_UNKNOWN_ERROR
(она предназначена для
клиентских ошибок), при этом сервер использует не новую, а старую функцию
проверки password()
.
Если вы не собираетесь использовать опцию --old-protocol
к mysqld
, то
необходимо будет выполнить следующие изменения:
-
Весь клиентский код следует перекомпилировать. Для использования ODBC
необходимо приобрести новый драйвер
MyODBC
2.x.
-
Необходимо запустить скрипт `scripts/add_long_password' для
преобразования поля
Password
в таблице mysql.user
к CHAR(16)
.
-
Все пароли в таблице
mysql.user
должны быть переназначены (чтобы
получить 62- разрядные пароли вместо 31- разрядных).
-
Формат таблиц не изменялся, следовательно, в преобразовании каких-либо
таблиц необходимости нет.
Версия MySQL 3.20.28 и выше может обрабатывать новый формат таблиц user
так, что это не отражается на клиентах. В более ранних, чем 3.20.28,
версиях MySQL пароли больше не будут работать с клиентами, если таблица
user
преобразована. Для уверенности следует прежде провести апгрейд по
меньшей мере до версии 3.20.28 и затем модернизировать до версии 3.21.
Новый код клиента работает с сервером mysqld
версии 3.20.x, так что в
случае каких-либо проблем с версией 3.21.x можно использовать старый
сервер 3.20.x без необходимости повторной перекомпиляции клиентов.
Если не применить опцию --old-protocol
для mysqld
, то старые клиенты
выдадут следующее сообщение об ошибке:
ERROR: Protocol mismatch. Server Version = 10 Client Version = 9
Новый интерфейс Perl DBI
/DBD
также поддерживает старый интерфейс
mysqlperl
. Единственное изменение, которое следует произвести при
использовании mysqlperl
, модифицировать аргументы в функции connect()
.
Новыми аргументами являются: host
, database
, user
, и password
(аргументы
user
и password
поменялись местами). See section 8.2.2 Интерфейс DBI
.
Ниже перечислены изменения, которые могут повлиять на запросы в старых
приложениях:
-
HAVING
теперь необходимо указывать перед любым выражением ORDER BY
.
-
Произведена замена параметров в
LOCATE()
.
-
Появилось несколько новых зарезервированных слов. Наиболее значимыми
из них являются
DATE
, TIME
и TIMESTAMP
.