現行システムのメンテナンスをしているとテーブル仕様書とデータベースのテーブルが異なることはありますね。
現行データベースのテーブルの CREATE 文を取得する方法を紹介します。
MySql コンソールからテーブル一つずつ取得する方法
mysql> SHOW CREATE TABLE table_name
以下、出力例です。(※見やすくなるように少し修正してあります。)
mysql> show create table Groups; +--------+---------------------------------------------------+ | Table | Create Table | +--------+---------------------------------------------------+ | Groups | CREATE TABLE `Groups` ( `group_id` int(9) unsigned NOT NULL auto_increment, `group_parent_id` int(9) default NULL, `group_name` varchar(255) NOT NULL, `org_id` int(9) unsigned NOT NULL, `created` datetime default NULL, `modified` datetime default NULL, `deprecated` datetime default NULL, PRIMARY KEY (`group_id`) ) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8 | +--------+--------------------------------------------------+
データなしでダンプする方法
# mysqldump -h localhost -u root -p --no-data database_name;
以下、ダンプした一部です。
-- -- Table structure for table `Groups` -- DROP TABLE IF EXISTS `Groups`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `Groups` ( `group_id` int(9) unsigned NOT NULL auto_increment, `group_parent_id` int(9) default NULL, `group_name` varchar(255) NOT NULL, `org_id` int(9) unsigned NOT NULL, `created` datetime default NULL, `modified` datetime default NULL, `deprecated` datetime default NULL, PRIMARY KEY (`group_id`) ) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */;
どちらの方法でも、AUTO_INCREMENT の初期値が現行の値が設定されていますので、新規でデータベースを作成する場合は注意が必要です。