| Précédent | Table des matière | Suivant |
![]() | ![]() |
BLOB ne peuvent pas être utilisées de manière ``sûre''
dans les clauses GROUP BY, ORDER BY ou DISTINCT.
Seuls, les max_sort_length premiers octets (par défaut 1024)
sont utilisés dans les comparaisons entre BLOB.
Cela peut être changé avec l'option -O max_sort_length de mysqld.
Une solution pour contourner le problème est d'utiliser une sous chaîne :
SELECT DISTINCT LEFT(blob,2048) FROM nom_table.
BIGINT ou DOUBLE (les deux font 64 bits de long).
La précision de calcul dépend de la fonction. La régle générale est que les fonctions de bits
sont fait en précision BIGINT, IF et ELT() avec une précision
BIGINT ou DOUBLE, et le reste est fait en précision DOUBLE.
Il vaut mieux éviter d'utiliser les valeurs non signées, supérieures à
63 bits(9223372036854775807) pour tout ce qui n'est pas champs de bits.
BLOB et TEXT, sont automatiquement débarassées
de leurs espaces de fin de chaînes. Pour les types CHAR c'est bon, et peut même
être vu comme une fonctionnalité, d'après la norme ANSI SQL92. Le bug est que
MySQL traite les colonnes VARCHAR de la même façon.
ENUM et SET dans une seule table.
UPDATE qui modifiait une clé
avec une clause WHERE sur la même clé pouvait échouer car la clé était utilisée pour
rechercher les lignes, et la même ligne risque d'avoir été trouvée plusieurs fois.
UPDATE nom_table SET KEY=KEY+1 WHERE KEY > 100;Pour contourner le problème, on pourvait utiliser la requête suivante :
mysql> UPDATE nom_table SET KEY=KEY+1 WHERE KEY+0 > 100;Cela va fonctionner, car MySQL ne va pas utiliser d'index dans les expressions qui sont dans la clause
WHERE.
safe_mysqld redirige tous les messages de mysqld vers l'historique mysqld.
Le problème est que si vous exécutez la commande mysqladmin refresh pour
fermer et réouvrir l'historique,
stdout et stderr continue de pointer sur l'ancien fichier d'historique.
Si vous utilisez --log extensivement, il vaut mieux éditer le fichier safe_mysqld
et y mettre `'hostname'.err' au lieu de `'hostname'.log' pour que vous puissiez
facilement récupérer l'espace de l'ancien fichier d'historique, en effacant l'ancient, et exécutant mysqladmin refresh.
UPDATE, les colonnes sont modifiées de gauche à droite.
Si vous faites référence à une colonne modifiée, vous allez utiliser la valeur modifiée, au lieu
d'utiliser la valeur originale.
Par exemple :
mysql> UPDATE nom_table SET KEY=KEY+1,KEY=KEY+1va mettre dans
KEY la valeur 2 au lieu de 1.
Pour les bugs spécifiques à chaque plate forme, reportez vous à la section sur la compilation et le portage.