カテゴリー
Database

MySql 現行データベースのテーブル CREATE TABLE文を取得

現行システムのメンテナンスをしているとテーブル仕様書とデータベースのテーブルが異なることはありますね。

現行データベースのテーブルの 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 の初期値が現行の値が設定されていますので、新規でデータベースを作成する場合は注意が必要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください