2011年12月7日水曜日

MySQL 5.5でAUTO_INCREMENTを使うとERROR 1075が出る

MySQL 5.5.17を使っているが、ちょっとハマった。
以前のバージョンで動いていたDDLのCREATE TABLEでエラーがでる。
mysql> CREATE TABLE test
-> (
-> id VARCHAR(20) NOT NULL,
-> number INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id, number)
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

AUTO_INCREMENTはキーでないとダメらしい。
いや、プライマリキーに指定しているのだが...?

データベースエンジンをmyisamに設定すると通った。
mysql> set storage_engine=myisam;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE test
-> (
-> id VARCHAR(20) NOT NULL,
-> number INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id, number)
-> );
Query OK, 0 rows affected (0.00 sec)
たしか、MySQL 5.5あたりから、デフォルトのデータベース形式がMyISAMからInnoDBに変わったような気がするが、それが原因かもしれない。
だけど、同じSQLが通らないというのは、MySQL5.5はまだ不安が多いかも。