web-dev-qa-db-fra.com

Créer une table mysql avec un jeu de caractères par défaut explicite, que faire si je ne le fais pas?

Dans mysql 5.x Quelle est la différence si je fais quelque chose comme ça:

CREATE TABLE aTable (
    id                       BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    aNumber          bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;

avec ça:

CREATE TABLE aTable (
   id                       BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   aNumber            bigint(20) DEFAULT NULL
) ENGINE=InnoDB CHARACTER SET=utf8;

Remarquez que je ne spécifie pas le jeu de caractères par défaut dans le premier. Je n'ai rien trouvé dans les documents mysql.

23
DanInDC

Le mot DEFAULT y est facultatif - les deux sont donc équivalents, c'est-à-dire qu'ils définissent le jeu de caractères par défaut pour la table.

Voir la documentation MySQL pour CREATE TABLE . Voici le morceau pertinent:

table_option:
    ENGINE [=] engine_name
  ... other options ...
  | [DEFAULT] CHARACTER SET [=] charset_name
  ... more options ...

Vous pouvez le confirmer en utilisant la commande SHOW CREATE TABLE .

28
martin clayton

Il existe 4 niveaux de paramètres par défaut dans MySQL: serveur, base de données, table et colonne. En utilisant des valeurs par défaut de niveau inférieur, vous pouvez remplacer les valeurs par défaut de levier plus élevées.

Si vous modifiez une table dont le jeu de caractères par défaut est différent de ce que la base de données a défini, la valeur par défaut de la table remplace la valeur par défaut db.

14
code_burgar