2.5 Changer de version de MySQL
2 Installer MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Passer en de version 4.1 en version 5.0 . Passer de la version 4.0 à la version 4.1 . Passer de la version 3.23 à la version 4.0 ->Passer de la version 3.22 à la version 3.23 . Passer de la version 3.21 à la version 3.22 . Passer de la version 3.20 à la version 3.21 . Mettre à jour MySQL sous Windows . Mise à jour des tables de droits . Migrer depuis une autre architecture
|
2.5.4 Passer de la version 3.22 à la version 3.23
Les clients des versions 3.22 et 3.21 vont fonctionner sans problèmes avec la
version 3.23 du serveur.
La liste suivante indique les points à vérifier lors de la migration :
Changement de tables :
-
MySQL 3.23 supporte les nouvelles tables
MyISAM
et l'ancien
type
ISAM
. Par défaut, toutes les nouvelles tables sont créées avec
MyISAM
à moins que vous ne lanciez
mysqld
avec l'option
--default-table-type=isam
. Vous n'avez pas à convertir les anciennes
tables
ISAM
pour les utiliser avec MySQL 3.23. Vous pouvez les convertir
les tables
ISAM
en
MyISAM
avec la commande
ALTER TABLE tbl_name TYPE=MyISAM
et le script Perl
mysql_convert_table_format
.
-
Toutes les tables qui utilisent le jeu de caractères
tis620
doivent
être corrigées avec
myisamchk -r
ou
REPAIR TABLE
.
-
Si vous utilisez le jeu de caractères
allemand
pour les tris, vous devez
réparer vos tables avec
isamchk -r
, car nous avons fait des modifications
dans l'ordre de tri.
Changement au programme client :
-
Le client MySQL
mysql
est démarré par défaut avec l'option
option
--no-named-commands (-g)
. Cette option peut être désactivée avec
--enable-named-commands (-G)
. Cela peut causer des problèmes d'incompatibilité
dans certains cas : par exemple, dans les scripts SQL qui utilisent des
commandes nommées sans point virgule! Le format long de la commande devrait
fonctionner correctement.
-
Si vous voulez que les fichiers d'export de
mysqldump
soient compatibles
entre les versions MySQL 3.22 et 3.23, vous ne devez pas utiliser
l'option
--opt
ou
--all
de
mysqldump
.
Changements SQL :
-
Si vous exécutez une commande
DROP DATABASE
sur un lien symbolique,
le lien et la base originale seront effacés. Cela n'arrivait pas en 3.22
car
configure
ne détectait pas les appels à
readlink
.
-
OPTIMIZE TABLE
ne fonctionne que pour les tables
MyISAM
.
Pour les autres types de tables, vous devez utiliser
ALTER TABLE
pour
optimiser la table. Durant la commande
OPTIMIZE TABLE
, la table est
verrouillée.
-
Les fonctions de date qui travaillent sur des parties de date (comme
MONTH()
)
vont désormais retourner 0 pour la date
0000-00-00
. (MySQL 3.22 retournait
NULL
.)
-
Le type de retour par défaut de
IF()
dépendant maintenant des deux arguments,
et plus seulement du premier.
-
AUTO_INCREMENT
ne fonctionne pas sur les nombres négatifs. La raison pour
cela est que les nombres négatifs posaient des problèmes d'écrasement entre -1 et 0.
AUTO_INCREMENT
pour les tables
MyISAM
est maintenant géré à un niveau
plus bas, et il est bien plus rapide. Pour les tables
MyISAM
, les anciens
numéros ne sont plus réutilisés, même si vous effacez des lignes dans la table.
-
CASE
,
DELAYED
,
ELSE
,
END
,
FULLTEXT
,
INNER
,
RIGHT
,
THEN
et
WHEN
sont de nouveaux mots réservés.
-
FLOAT(p)
est maintenant un véritable type de nombre à virgule flottante,
avec un nombre défini de décimales.
-
Lors de la déclaration de
DECIMAL(length,dec)
, la taille de l'argument
n'inclut plus une place pour le signe ou le séparateur décimal.
-
Une chaîne
TIME
doit être fournie au format suivant :
[[[DAYS] [H]H:]MM:]SS[.fraction]
ou
[[[[[H]H]H]H]MM]SS[.fraction]
.
-
LIKE
compare maintenant les chaînes en appliquant les mêmes règles que
=
. Si vous voulez l'ancien comportement, vous pouvez compiler MySQL avec
l'option
CXXFLAGS=-DLIKE_CMP_TOUPPER
.
-
REGEXP
est maintenant insensible à la casse pour les chaînes normales (non binaires).
-
Quand vous vérifiez/réparez des tables, vous devez utiliser
CHECK TABLE
ou
myisamchk
pour les tables
MyISAM
(
.MYI
) et
isamchk
pour les tables
ISAM
(
.ISM
).
-
Vérifiez tous vos appels à
DATE_FORMAT()
pour vous assurer qu'il
y a un signe pourcentage
'%'
avant chaque caractère de format
(MySQL version 3.22 et plus récent avait déjà cette syntaxe, mais
désormais
'%'
est obligatoire).
-
En MySQL version 3.22, le résultat de
SELECT DISTINCT ...
était
toujours trié. En version 3.23, vous devez spécifier la clause
GROUP BY
ou
ORDER BY
pour obtenir un résultat trié.
-
SUM()
retourne désormais
NULL
, au lieu de 0, si
il n'y a pas de lignes à calculer. Ceci s'accorde avec la norme SQL.
-
AND
ou
OR
avec les valeurs
NULL
vont désormais retourner
NULL
au lieu de 0. Cela affecte surtout les requêtes qui utilisait
NOT
ou une expression
AND/OR
telle que
NOT NULL
=
NULL
.
-
LPAD()
et
RPAD()
vont réduire la taille de la chaîne résultante,
si elle est plus grand que l'argument de taille.
Changement de l'interface C :
-
mysql_fetch_fields_direct
est maintenant une fonction (c'était une
macro), qui retourne un pointeur sur
MYSQL_FIELD
au lieu de
MYSQL_FIELD
.
-
mysql_num_fields()
ne peut plus être utilisé sur les objets
MYSQL*
(c'est maintenant une fonction qui prend
MYSQL_RES*
comme argument. Il faut
donc utiliser
mysql_field_count()
à la place).
|