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