Questions sur les moteurs de base de données

Résolu/Fermé
alter - 4 juin 2009 à 10:54
 alter - 4 juin 2009 à 11:22
Bonjour,
J'ai fais des recherches sur le net mais je n'ai pas réussi à obtenir des réponses à ces deux questions :
Lorsque je crée une base de données sur MySQL v5.0.45 (create database if not exists bddtest), est-ce que la base qui est créée à un moteur de base par défaut (ex : MyISAM ou InnoDB) et si oui, comment le connaître ? (Y-a-t-il une ligne de commande SQL pour le voir ?)

La 2ème question est :
Est que MySQL arrive à choisir par défaut le moteur de base adaptée à la création d'une base. Par exemple le code ci-dessous nécessite t-il que je précise à la fin " TYPE = INNODB; " :
-- Creation de la table MECA :
create table MECA
(
MECA_ID integer not null auto_increment,
Meca_Name varchar(100) binary not null,
Meca_Description TEXT(500),
Meca_Mode_Zone varchar(50) binary,
primary key (MECA_ID),
unique (MECA_ID,Meca_Name)
FOREIGN KEY (MECA_ID) REFERENCES MECA_CATEGORY (MECA_CATEGORY_ID),
);

Merci

4 réponses

dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
4 juin 2009 à 11:05
bonjour,

1/ On peut définir le moteur de stockage par défaut dans le my.cnf
Exemple :
[mysqld]
default-storage_engine = innodb

S'il n'y en a pas de défini, MyISAM sera pris comme défaut.

2/ Mysql n'a aucune intelligence ;-) dans la creation : dans ton cas, et même si la foreign key implique un moteurt relationnel type innodb, il prendra quand meme MyISAM par défaut si configuré comme tel.
Par ailleurs, innodb n'est PAS le seul moteur à supporter les foreign keys : tu as aussi BDB, Maria, ... donc MySQL ne peut pas "deviner" lequel tu veux :)

La bonne syntaxe (la tienne marchera mais n'est plus conseillée est :
ENGINE=...

Enfin pour le fun, la commande pour voir la liste des moteurs dispos : SHOW ENGINES;

Bon courage
1