| 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 :
 
Changement au programme client :
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. 
Changements SQL :
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
 . 
Changement de l'interface C :
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.
 
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). |