1. ホーム
  2. mysql

[解決済み] MySQL Workbench でテーブル作成スクリプトを取得する方法

2023-06-21 08:36:52

質問

MySQL Workbench でテーブル作成スクリプトを取得するためのショートカットが見つからないため、MySQL GUI Tools の MySQL Query Browser にロールバックしています。

どのように解決するのですか?

少なくとも Community エディションでは、そのようなオプションは見当たりません。

に相当するのでしょうね。 リバースエンジニアリング の機能は、残念ながら商用版でのみ利用可能です。 (引用) :

データベースのリバースエンジニアリング MySQL サーバから直接 が適用されます。 商用バージョンのMySQL ワークベンチのみ .



それでも、プレーン SQL を使って create table の命令で、テーブルを作成することができます。

例えば、次のようなクエリ:

show create table url_alias;

をdrupalのデータベースで実行した場合、右のような click > copy field content を使用すると、その結果 :

'CREATE TABLE `url_alias` (
  `pid` int(10) unsigned NOT NULL auto_increment,
  `src` varchar(128) NOT NULL default '''',
  `dst` varchar(128) NOT NULL default '''',
  `language` varchar(12) NOT NULL default '''',
  PRIMARY KEY  (`pid`),
  UNIQUE KEY `dst_language` (`dst`,`language`),
  KEY `src_language` (`src`,`language`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8'

残念ながら (再び) この方法でコピーする場合、MySQL Workbench はあらゆるところに引用符を追加します :-(


EDIT: MySQL 8.0 を使用している場合、右のようなオプションがあります。 click > copy field (unquoted) を右クリックすると、引用符なしで目的の結果を得ることができます。



最終的には 最もシンプルな 解決策は、MySQL Query Browser を使用する場合を除き、コマンドラインクライアントを使用してデータベースに接続し show create table クエリを実行することです。

mysql> show create table url_alias\G
*************************** 1. row ***************************
       Table: url_alias
Create Table: CREATE TABLE `url_alias` (
  `pid` int(10) unsigned NOT NULL auto_increment,
  `src` varchar(128) NOT NULL default '',
  `dst` varchar(128) NOT NULL default '',
  `language` varchar(12) NOT NULL default '',
  PRIMARY KEY  (`pid`),
  UNIQUE KEY `dst_language` (`dst`,`language`),
  KEY `src_language` (`src`,`language`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

"を取得する。 右の部分 を取得するのは簡単です。




また、念のため、以下のように mysqldump を使用してテーブルの構造を取得することもできます。

mysqldump --no-data --user=USERNAME --password=PASSWORD --host=HOST DATABASE_NAME TABLE_NAME

を使うことで --no-data スイッチを使うと、構造体 -- いくつかのモード設定やその他もろもろの途中で .