5.2 Configuration de MySQL
5 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Options de ligne de commande de mysqld ->Le mode SQL du serveur . Variables serveur système . Variables de statut du serveur
|
5.2.2 Le mode SQL du serveur
Le serveur MySQL peut fonctionner avec différent modes SQL, et,
depuis MySQL 4.1, il peut appliquer ces modes au niveau de la connexion
du client. Cela permet aux applications d'adapter le comportement du
serveur en fonction de leur attentes.
Le mode définit quelle syntaxe SQL MySQL doit supporter, et quels types
de vérification il doit faire. Cela rend plus facile l'utilisation de MySQL
dans différents environnement, et la connexion avec les autres
serveurs de base de données.
Vous pouvez donner un mode SQL par défaut au démarrage de
mysqld
avec
l'option
--sql-mode="modes"
. Depuis MySQL 4.1, vous pouvez aussi changer le
mode après le démarrage en modifiant la variable
sql_mode
avec la
commande
SET [SESSION|GLOBAL] sql_mode='modes'
.
Modifier la variable
GLOBAL
affecte les opérations de tous les clients qui
se connecteront. En modifiant la variable
SESSION
, cela n'affectera que
le client courant.
modes
est une liste de modes différents, séparés par des virgules
(
','
). Vous pouvez lire le mode courant avec la commande
SELECT @@sql_mode
.
La valeur par défaut est vide (par de modes configurés).
La valeur peut aussi être vide (
--sql-mode=""
) si vous voulez la remettre
à zéro.
La liste suivante présente les différents modes supportés :
-
ANSI_QUOTES
-
Traite
'"'
comme un délimiteur d'identifiant (comme le caractère
MySQL
'`'
) et non comme un délimiteur de chaînes. Vous pouvez toujours
utiliser
'`'
pour délimiter les identifiants en mode ANSI. Avec
ANSI_QUOTES
activée, vous ne pouvez pas utiliser les guillemets doubles
pour délimiter une chaîne de caractères, car ce sera uniquement interprété
comme un identifiant.
(Nouveau en MySQL 4.0.0.)
-
IGNORE_SPACE
-
Permet les espaces entre le nom de la fonction et le caractère
'('
. Cela force
les noms de fonctions a être traités comme des mots réservés. En conséquence,
si vous voulez accéder aux bases, tables et colonnes dont le nom est un mot
réservé, vous devez le mettre entre délimiteurs. Par exemple, comme la fonction
USER()
existe, le nom de la table
user
de la base
mysql
et la colonne
User
de cette table doivent être protégés :
SELECT "User" FROM mysql."user";
|
(Nouveau en MySQL 4.0.0.)
-
NO_AUTO_VALUE_ON_ZERO
-
NO_AUTO_VALUE_ON_ZERO
affecte la gestion des colonnes de type
AUTO_INCREMENT
.
Normalement, vous générez le prochain numéro de séquence dans la colonne en
insérant soit
NULL
soit
0
dedans.
NO_AUTO_VALUE_ON_ZERO
supprime ce comportement pour
0
pour que seule
la valeur
NULL
génère le prochain numéro de séquence. Ce mode est utile
si vous avez stocké la valeur
0
dans la colonne
AUTO_INCREMENT
de la table.
Ce n'est pas recommandé. Par exemple, si vous voulez exporter une table avec
mysqldump
et que vous la rechargez, normalement MySQL va générer de
nouveaux identifiants pour les lignes avec la valeur
0
, ce qui entraînera
une différence avec la table originale. En activant
NO_AUTO_VALUE_ON_ZERO
avant de recharger le fichier exporter, vous éviter de problème.
Depuis MySQL 4.1.1,
mysqldump
va automatiquement inclure les
commandes nécessaires dans l'export, pour activer
NO_AUTO_VALUE_ON_ZERO
.
(Nouveau en MySQL 4.1.1.)
-
NO_DIR_IN_CREATE
-
Lors de la création d'une table, ignore les directives
INDEX DIRECTORY
et
DATA DIRECTORY
. Cette option est pratique sur un esclave de réplication.
(Nouveau en MySQL 4.0.15.)
-
NO_FIELD_OPTIONS
-
N'affiche pas les options spécifiques à MySQL dans le résultat de
SHOW CREATE TABLE
. Ce mode est utilisé par
mysqldump
dans
un souci de portabilité.
(Nouveau en MySQL 4.1.1.)
-
NO_KEY_OPTIONS
-
N'affiche pas les options spécifiques à MySQL dans le résultat de
SHOW CREATE TABLE
. Ce mode est utilisé par
mysqldump
dans
un souci de portabilité.
(Nouveau en MySQL 4.1.1.)
-
NO_TABLE_OPTIONS
-
N'affiche pas les options de tables spécifiques à MySQL
(comme
ENGINE
) dans le résultat de
SHOW CREATE TABLE
. Ce mode est utilisé par
mysqldump
dans
un souci de portabilité.
(Nouveau en MySQL 4.1.1.)
-
NO_UNSIGNED_SUBTRACTION
-
Dans les opérations de soustraction, ne marque pas le résultat
UNSIGNED
si
un des opérandes est non signé. Notez que cela fait que
UNSIGNED BIGINT
n'est plus totalement utilisable dans tous les contextes. Fonctions de transtypage .
(Nouveau en MySQL 4.0.2.)
-
ONLY_FULL_GROUP_BY
-
N'autorise pas les requêtes dont la clause
GROUP BY
fait référence
à une colonne qui n'est pas sélectionnée.
(Nouveau en MySQL 4.0.0.)
-
PIPES_AS_CONCAT
-
Traite
||
comme un opérateur de concaténation (identique à
CONCAT()
)
au lieu d'être un synonyme de
OR
.
(Nouveau en MySQL 4.0.0.)
-
REAL_AS_FLOAT
-
Traite le type
REAL
comme un synonyme
FLOAT
plutôt que comme un
synonyme de
DOUBLE
.
(Nouveau en MySQL 4.0.0.)
Les modes suivants sont fournis comme des raccourcis pour des combinaisons
de modes, issus de la liste précédente. Ils sont valables en MySQL 4.1.1.
-
ANSI
-
Equivalent à
REAL_AS_FLOAT
,
PIPES_AS_CONCAT
,
ANSI_QUOTES
,
IGNORE_SPACE
,
ONLY_FULL_GROUP_BY
. Exécuter MySQL en mode ANSI .
-
DB2
-
Equivalent à
PIPES_AS_CONCAT
,
ANSI_QUOTES
,
IGNORE_SPACE
,
NO_KEY_OPTIONS
,
NO_TABLE_OPTIONS
,
NO_FIELD_OPTIONS
.
-
MAXDB
-
Equivalent à
PIPES_AS_CONCAT
,
ANSI_QUOTES
,
IGNORE_SPACE
,
NO_KEY_OPTIONS
,
NO_TABLE_OPTIONS
,
NO_FIELD_OPTIONS
.
-
MSSQL
-
Equivalent à
PIPES_AS_CONCAT
,
ANSI_QUOTES
,
IGNORE_SPACE
,
NO_KEY_OPTIONS
,
NO_TABLE_OPTIONS
,
NO_FIELD_OPTIONS
.
-
MYSQL323
-
Equivalent à
NO_FIELD_OPTIONS
.
-
MYSQL40
-
Equivalent à
NO_FIELD_OPTIONS
.
-
ORACLE
-
Equivalent à
PIPES_AS_CONCAT
,
ANSI_QUOTES
,
IGNORE_SPACE
,
NO_KEY_OPTIONS
,
NO_TABLE_OPTIONS
,
NO_FIELD_OPTIONS
.
-
POSTGRESQL
-
Equivalent à
PIPES_AS_CONCAT
,
ANSI_QUOTES
,
IGNORE_SPACE
,
NO_KEY_OPTIONS
,
NO_TABLE_OPTIONS
,
NO_FIELD_OPTIONS
.
|