MySQLでテーブル作成時のデフォルトストレージエンジンを変更する
MySQLでデフォルトのストレージエンジンを設定する方法
新しいテーブルを作成する際、CREATE TABLE
ステートメントにENGINE
オプションを指定することで、使用するストレージエンジンを明示的に設定できます。しかし、毎回ENGINE
オプションを指定するのは煩雑です。そこで、MySQLではデフォルトのストレージエンジンを設定することができ、ENGINE
オプションを省略した場合でも、そのエンジンでテーブルが作成されます。
デフォルトストレージエンジンの設定方法
MySQLでデフォルトのストレージエンジンを設定するには、以下の2つの方法があります。
サーバー起動オプションを使用する
MySQL起動時に--default-storage-engine
オプションを指定することで、デフォルトのストレージエンジンを設定できます。
shell> mysqld --default-storage-engine=innodb
このコマンドを実行すると、MySQL起動後、新しく作成されるすべてのテーブルはInnoDBエンジンで作成されます。
設定ファイルを使用する
[mysqld]
default-storage-engine=innodb
上記のように設定ファイルを編集し、MySQLを再起動することで、デフォルトのストレージエンジンがInnoDBに変更されます。
現在設定されているデフォルトのストレージエンジンを確認するには、以下のコマンドを実行します。
mysql> SHOW VARIABLES LIKE 'storage_engine';
出力結果のValue
列に、現在のデフォルトストレージエンジンが表示されます。
注意事項
- デフォルトストレージエンジンの変更は、既存のテーブルには影響しません。
- MySQL 8.0以降では、デフォルトのストレージエンジンはInnoDBになっています。
- ストレージエンジンを変更する場合は、それぞれのエンジンの特性を理解した上で、適切なエンジンを選択してください。
shell> mysqld --default-storage-engine=innodb
[mysqld]
default-storage-engine=innodb
Creating a table with the default storage engine:
CREATE TABLE my_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
In this example, the my_table
table will be created using the default storage engine, which is InnoDB.
Checking the current default storage engine:
mysql> SHOW VARIABLES LIKE 'storage_engine';
This will output the following:
Variable_name | Value
-------------+-----------------
storage_engine | INNODB
CREATE TABLE my_table2 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
) ENGINE=MyISAM;
SQLモードを使用する
NO_ENGINE_SUBSTITUTION
SQLモードを有効にすることで、CREATE TABLE
ステートメントでENGINE
オプションを省略した場合でも、エラーを発生させることができます。
mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
この設定を有効にした場合、ENGINE
オプションを省略してテーブルを作成しようとすると、以下のエラーが発生します。
ERROR 1050 (42000): Table option 'ENGINE' not specified
プロンプト編集機能を使用する
MySQLクライアントの中には、プロンプト編集機能を使用してデフォルトのストレージエンジンを設定できるものがあります。
例えば、MySQL Workbenchを使用している場合、以下の手順でデフォルトのストレージエンジンを設定できます。
- MySQL Workbenchを起動します。
- 接続アイコンをクリックして、MySQLサーバーに接続します。
- サーバー管理 > 設定 > 一般を選択します。
- デフォルトストレージエンジンフィールドで、使用するストレージエンジンを選択します。
- 適用をクリックして、設定を保存します。
環境変数を使用する
MYSQL_DEFAULT_STORAGE_ENGINE
環境変数を設定することで、デフォルトのストレージエンジンを設定できます。
shell> export MYSQL_DEFAULT_STORAGE_ENGINE=innodb
このコマンドを実行すると、現在のシェルで起動されるすべてのMySQLクライアントで、デフォルトのストレージエンジンがInnoDBに設定されます。
- 上記の方法でデフォルトストレージエンジンを設定した場合、MySQLを再起動する必要はありません。
- 設定方法は、MySQLクライアントやオペレーティングシステムによって異なる場合があります。
mysql database innodb