Services webmasters
Partenaires
Jeux concours gratuits
 
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 Installation de MySQL
 Manuel de Référence MySQL 4.1 : Version Française

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
Migrer depuis une autre architecture

2.5.2 Passer de la version 3.22 à la version 3.23

MySQL version 3.23 supporte les nouvelles tables MyISAM et les anciennes tables ISAM . Vous n'avez pas à convertir vos anciennes tables pour utiliser la nouvelle version 3.23. Par défaut, toutes les nouvelles tables seront créées avec le type MyISAM (à moins que vous ne lanciez mysqld avec l'option --default-table-type=isam ). Vous pouvez changer la table ISAM en table MyISAM avec la commande ALTER TABLE table_name TYPE=MyISAM ou le script Perl mysql_convert_table_format .

Les clients des versions 3.22 et 3.21 vont fonctionner sans problèmes avec la verison 3.23 du serveur.

La liste suivante indique les points à vérifier lors de la migration :

  • Toutes les tables qui utilisent le jeu de caractères tis620 doivent être corrigées avec myisamchk -r ou REPAIR TABLE .
  • 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.
  • 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.
  • Les fonctions de date qui travaille sur des parties de dates (comme MONTH() ) vont désormais retourner 0 pour la date 0000-00-00 . (MySQL 3.22 retournait NULL .)
  • 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.
  • 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(X) 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 ).
  • Si vous voulez que les fichiers d'export de mysqldump soit compatibles entre les versions MySQL 3.22 et 3.23, vous ne devez pas utiliser l'option --opt ou --all de mysqldump .
  • 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).
  • 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).
  • 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.

<< 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
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -