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

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

<< Passer de la version 3.22 à la version 3.23 >>
Passer de la version 3.23 à la version 4.0 Changer de version de MySQL Passer de la version 3.21 à la version 3.22