2010-06-16 11 views
46

Sto lavorando alla scrittura di SQL per creare un database MySQL con diverse opzioni predefinite, inclusi set di caratteri e regole di confronto. È possibile impostare il motore di archiviazione predefinito per le tabelle in questo database su InnoDB?Come posso impostare il motore di memorizzazione predefinito usato da MySQL?

Ho cercato attraverso il MySQL 5.1 manuale e ho trovato la dichiarazione ENGINE=innodb che sarebbe aggiunto a una dichiarazione CREATE TABLE, ma non ho trovato tutto ciò che riguarda una dichiarazione CREATE DATABASE.

Esiste un modo normale per eseguire questa operazione come parte della creazione del database oppure è necessario specificarlo tabella per tabella?

risposta

57

Citando il manuale di riferimento (Setting the Storage Engine):

Se si omette l'opzione ENGINE, viene utilizzato il motore di archiviazione predefinito. Normalmente, questo è MyISAM, ma è possibile modificarlo utilizzando l'opzione di avvio del server --default-storage-engine, oppure impostando l'opzione default-storage-engine nel file di configurazione my.cnf.

L'opzione default-storage motore deve essere parte della sezione mysqld in my.cnf;

[mysqld] 
default-storage-engine = innodb 

Si consiglia inoltre di modificare il motore di archiviazione predefinito solo per la sessione corrente. È possibile farlo impostando la variabile storage_engine:

SET storage_engine=INNODB; 
+7

nota, è necessario reimpostare mysql per le modifiche my.cnf abbiano effetto. Piuttosto ovvio ma mi ha fatto inciampare. –

+0

Per l'impostazione in my.cnf, suppongo che dovrebbe entrare nella sezione [mysqld] o è importante? –

+1

Nota in mysql> = 5.7.9 devi usare default_storage_engine – mjj1409

5

è necessario specificare il motore di archiviazione predefinito quando si avvia mysqld. per esempio:

mysqld --default-storage-engine=InnoDB 

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

+2

Avrei dovuto essere più chiaro ... Sono a conoscenza di come specificare l'utilizzo di InnoDB dalle istruzioni CREATE TABLE e l'utilizzo delle opzioni di avvio e di modifica di my.cnf. Mi sto chiedendo in particolare se è possibile fare come parte di un'istruzione CREATE DATABASE in uno script SQL. – memilanuk

+0

no, non sono a conoscenza di un metodo per farlo. – sml

Problemi correlati