2010-06-16 15 views
46

J'ai travaillé sur l'écriture de SQL pour créer une base de données MySQL avec plusieurs options par défaut, y compris le jeu de caractères et le classement. Est-il possible de définir le moteur de stockage par défaut pour les tables de cette base de données sur InnoDB?Comment puis-je définir le moteur de stockage par défaut utilisé par MySQL?

que je suis à la recherche par le MySQL 5.1 manuel et je l'ai trouvé la déclaration ENGINE=innodb qui serait annexée à une déclaration CREATE TABLE, mais je n'ai rien trouvé lié à une déclaration CREATE DATABASE.

Existe-t-il un moyen normal de le faire dans le cadre de la création de la base de données ou doit-il être spécifié table par table?

Répondre

57

Citant le Manuel de référence (Setting the Storage Engine):

Si vous ne spécifiez pas l'option ENGINE, le moteur de stockage par défaut est utilisé. Normalement, cela est MyISAM, mais vous pouvez le modifier en utilisant l'option de démarrage du serveur --default-storage-engine, ou en définissant l'option default-storage-engine dans le fichier de configuration my.cnf.

L'option par défaut de stockage-moteur doit faire partie de la section de mysqld dans my.cnf;

[mysqld] 
default-storage-engine = innodb 

Vous pouvez également modifier le moteur de stockage par défaut uniquement pour la session en cours. Vous pouvez le faire en définissant la variable storage_engine:

SET storage_engine=INNODB; 
+7

Remarque, vous devez réinitialiser mysql pour que les modifications prennent effet my.cnf. Assez évident mais ça m'a fait trébucher. –

+0

Pour définir ceci dans my.cnf, je suppose qu'il devrait aller dans la section [mysqld], ou est-ce important? –

+1

Note dans mysql> = 5.7.9 vous devez utiliser default_storage_engine – mjj1409

5

vous devez spécifier le moteur de stockage par défaut lors du démarrage mysqld. par exemple:

mysqld --default-storage-engine=InnoDB 

http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_default-storage-engine

+2

J'aurais dû être plus clair ... Je sais comment spécifier en utilisant InnoDB à partir des instructions CREATE TABLE, et en utilisant les options de démarrage, et en modifiant my.cnf. Je demande spécifiquement s'il est possible de faire dans le cadre d'une instruction CREATE DATABASE dans un script SQL. – memilanuk

+0

non, je ne suis pas au courant d'une méthode pour le faire. – sml