mysqldumpのダンプでauto_incrementがなくなる (4.1.20 以前)
先日、mysqldump コマンドでMySQLのデータベースの移行を行ったのですが、そのときに --compatible=mysql40 オプションを付けると カラムの auto_increment が出力される SQL に含まれないという現象に遭遇しました。
既知のバグ
MySQL Bugs: #14515: mysqldump omits 'auto_increment' in MySQL4.0 compatibility mode ほかで指摘され、 4.1.21 で解決されたバグのようです。 (議論のなかには、ドキュメントに書かれていたのでバグではなかったというコメントもありました。)
問題のバージョン
$ mysqldump --version mysqldump Ver 10.9 Distrib 4.1.20, for redhat-linux-gnu (x86_64)
バックアップ対象のテーブル
mysql> DESC testtable; +-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | id | int(10) | | PRI | NULL | auto_increment | +-------+---------+------+-----+---------+----------------+ 1 row in set (0.00 sec)
auto_increment が落ちる
$ mysqldump -uroot autoincrement_test --compatible=mysql40
: : CREATE TABLE `testtable` ( `id` int(10) NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM; : :
見事に auto_increment が無くなっています。
4.1.22では再現しない
私が試した以下のバージョンでは修正されているため再現しませんでした。
$ mysqldump --version mysqldump Ver 10.9 Distrib 4.1.22, for apple-darwin7.9.0 (powerpc) $ mysqldump -uroot autoincrement_test --compatible=mysql40
: CREATE TABLE `testtable` ( `id` int(10) NOT NULL auto_increment, PRIMARY KEY (`id`) ) TYPE=MyISAM; : :