MySQLで「TYPE=InnoDB」を指定するとエラーになる?正しいストレージエンジンの指定方法
MySQLでテーブルを作成する際に「TYPE = InnoDB」と指定すると、構文エラーが発生します。これは、TYPE 構文が MySQL 5.1 で廃止(非推奨)になったためです。代わりに「ENGINE = InnoDB」を使用してください。
MySQLのバージョン確認方法
本記事の動作確認には MySQL 8.0.12 を使用しています。まずは、使用中の MySQL のバージョンを確認しておきましょう。バージョンは以下のクエリで確認できます。
mysql> select version();
実行結果:
+-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)
「TYPE = InnoDB」を指定した場合(エラーになる例)
実際に「TYPE = InnoDB」を使ってテーブルを作成しようとすると、MySQL 8.0 では次のようなエラーが表示されます。
mysql> create table Product_Information
-> (
-> ProductId int,
-> ProductName varchar(10),
-> ProductDeliveryDate datetime
-> )"TYPE = InnoDB";
ERROR 1064 (42000) - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"TYPE = InnoDB"' at line 6
このように ERROR 1064(SQL構文エラー) が発生し、テーブルを作成することができません。
「ENGINE = InnoDB」を指定した場合(正常に動作する例)
次に、「TYPE」の代わりに「ENGINE」を使用した例を見てみましょう。
mysql> create table Product_Information
-> (
-> ProductId int,
-> ProductName varchar(10),
-> ProductDeliveryDate datetime
-> )ENGINE = InnoDB;
Query OK, 0 rows affected (0.73 sec)
今度はエラーが発生せず、テーブルが正常に作成されました。
まとめ
- 「TYPE = InnoDB」は MySQL 5.1 以降で廃止された古い構文であり、現在のバージョンでは構文エラー(ERROR 1064)となる。
- ストレージエンジンを指定する場合は「ENGINE = InnoDB」を使用する。
- 古いSQLスクリプトを流用する際は、TYPE を ENGINE に置き換える必要がある。
-
Java JDBCでMySQLのCOUNTクエリを実行したときの戻り値の型は何?取得方法を解説
COUNT関数の戻り値の型は「long」 MySQLのCOUNT()関数をJava JDBCから実行した場合、戻り値の型はlong型になります。結果を取得するには、ResultSetのgetLong()メソッドを使用します。 rs.next(); long result = rs.getLong(anyAliasName); 以下では、サンプルデータベース「test3」を使って、実際にテーブルを作成し、COUNTクエリの結果をJavaで取得する手順を順番に解説します。 1. サンプルテーブルの作成 まず、テスト用のテーブルを作成します。テーブル作成用のSQLは次のとおりです。 mysql&g
-
MySQLではInnoDBはデフォルトで有効になっている?ストレージエンジンの確認方法を解説
MySQLにおけるInnoDBのデフォルト設定 はい、MySQLではInnoDBはデフォルトで有効になっています。特にMySQL 5.5以降ではInnoDBが標準のストレージエンジンとして採用されているため、CREATE文で明示的に指定しなくても自動的にInnoDBが使用されます。 ここでは、MySQL 8.0の環境を使って実際に確認していきましょう。まずは現在使用中のバージョンをチェックします。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1