掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     MySQLのリバースエンジニアリングでNotNull反映されず


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
ひ(未登録ゲスト)
投稿日時: 2007-9-4 17:01

MySQLのリバースエンジニアリングでNotNull反映されず

■症状
MySQL のリバースエンジニアリング時に、テーブル定義では、NotNullが指定されていないのにもかかわらず、結果はすべての列が NotNull制約がかかった状態になる

■詳細
[Project]
- [Database Engineering]
- [Import DB Schema from ODBC]

データソースを選択

Schema を指定

チェックボックスは、すべて非チェック状態

[Import]ボタンを押下

テーブルを選択して[OK]ボタンを押下

完了後、対象テーブルをダブルクリックして、開いたウィンドウにて、「Table Detail」タブを選択し、[Columns/Attributes]ボタンを押下して、NotNullを確認

すべての列が、NotNull Yes になってしまっている

■環境
●クライアント
・Windows XP Pro. SP2
・Enterprise Architect 7.0.815
・MySQL ODBC 3.51 Driver
●サーバー
・CentOS 5 on VMwareServer
 on Windows XP Pro. SP2
・MySQL 5.0.22 (CentOS 提供のパッケージ)
●対象テーブル
・ENGINE=InnoDB

■質問
・リバースエンジニアリング時に、正しく NotNull を反映させることは可能ですか?


# LAMPな、社内システムの開発用に、購入検討しています。
# よろしくお願いします。
tkouno
投稿日時: 2007-9-5 9:20
EA Administrator
投稿: 3939

Re: MySQLのリバースエンジニアリングでNotNull反映されず

ご迷惑をおかけし申し訳ございません。

こちらの環境で試してみましたが、再現させることが
できませんでした。
(ただし、MySQLサーバについては、CentOSの用意が
できずに、Windows上のMySQLサーバを利用しています)

以下、こちらの環境と異なる可能性がある点を列挙しますので
この点をご確認ください。

・Enterprise Architect→ビルド816
・MySQLODBCドライバ→3.51.12

お手数をおかけし申し訳ございません。
ご確認のほどよろしくお願いします。

ひ(未登録ゲスト)
投稿日時: 2007-9-5 10:50

Re: MySQLのリバースエンジニアリングでNotNull反映されず

御確認ありがとうございました。元質問者です。

ODBC ドライバのバージョン、細かく書かずに済みませんでした。
こちらの環境は、3.51.19でした。
ODBC の設定は、「Connect Options」及び「Advanced」の「Flags 1~3」、「Debug」共に、すべて未チェック・未指定状態です。

Enterprise Architect 7.0.816 をインストールしてみました。
結果は、変わりませんでした。

MySQL の再起動、データベースの新規作成と、テストテーブルの新規作成を新たに行なってみましたが、こちらも症状に変化なしです。
ENGINE=MyISAMでも、同様でした。


# /etc/rc.d/init.d/mysqld restart

$ mysqladmin -uroot create eatest
$ mysql -uroot eatest

mysql> show create table eatest_01 \G
* 1. row *
       Table: eatest_01
Create Table: CREATE TABLE `eatest_01` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(60) NOT NULL,
  `price` bigint(20) NOT NULL,
  `deleted_at` datetime default NULL,
  `updated_at` timestamp
    NOT NULL default CURRENT_TIMESTAMP
    on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)


eatest_01 テーブルのインポート完了後、[Project]
- [Database Engineering]
- [Generate Package DDL] にて生成


CREATE TABLE eatest_01
(
 id INT NOT NULL
  DEFAULT PRI AUTO_INCREMENT,
 name VARCHAR(60) NOT NULL,
 price BIGINT NOT NULL,
 deleted_at DATETIME NOT NULL,
 updated_at  NOT NULL
  DEFAULT CURRENT_TIMESTAMP
) TYPE=InnoDB
;

NotNull の件とは別になりますが、TIMESTAMP 型が正しく認識されていない状況も発生しています。(updated_at 列)


同僚の環境でも、試して見ましたが、結果は同様でした。
その他、何かお伝えした方が良い情報や、試して見る事はありますか?
よろしくお願いします。
tkouno
投稿日時: 2007-9-5 11:20
EA Administrator
投稿: 3939

Re: MySQLのリバースエンジニアリングでNotNull反映されず

いただきました情報を元に、
・ODBCドライバを3.51.19に 設定も同じように
・上記のスクリプトをコピーしてそのまま同じ環境を構築
して実行しましたが、やはり再現することができませんでした。
(timestampについては再現できましたので、こちらは
さらに原因を調査してまいります)

現状、違いは、MySQLのサーバがWindowsかCentOSかという点のみ
になってしまいます。
OS環境によってMySQLの動作やMySQLから渡される情報が異なることはないという前提ですが、
このあたりはMySQLの詳細について無知なため、さらに
調査を進めてまいります。

申し訳ございませんが、現時点ですぐにCentOSの環境を
構築することは難しい状況です。
引き続き調査をしてまいりますが、すぐに対応することができず
申し訳ございません。

tkouno
投稿日時: 2007-9-5 14:57
EA Administrator
投稿: 3939

Re: MySQLのリバースエンジニアリングでNotNull反映されず

ご指摘のtimestampの型の問題については原因がわかり
次のビルド817で修正されます。

引き続きご迷惑をおかけし申し訳ございませんが
修正まで今しばらくお待ちください。

今後ともよろしくお願いします。
ひ(未登録ゲスト)
投稿日時: 2007-9-5 18:06

Re: MySQLのリバースエンジニアリングでNotNull反映されず

こんばんは、元質問者です。
TIMESTAMP 型の件、早速ありがとうございます。

NotNull については、こちらでももう少し試してみます。
よろしくお願いします。
tkouno
投稿日時: 2007-9-6 13:34
EA Administrator
投稿: 3939

Re: MySQLのリバースエンジニアリングでNotNull反映されず

CentOS環境をこちらで構築できましたので調査しました。
その結果、ご指摘どおりの結果となりました。

・CentOSのMySQLがODBC経由で渡す値がおかしい
・Enterprise ArchitectがCentOSのMySQLから渡される値を
 何らかの理由で正しく解釈できない

のいずれかと思われます。

開発元と連携し、原因を調査します。

申し訳ございませんが、現時点では回避方法は思い当たりません。
(CentOS側の設定で改善する可能性はあるかもしれません)

引き続きご迷惑をおかけし申し訳ございませんが、修正までは
手作業でNotNullを解除してくださいますようお願いします。


貴重なご指摘ありがとうございました。

今後ともよろしくお願いします。

ひ(未登録ゲスト)
投稿日時: 2007-9-6 15:38

Re: MySQLのリバースエンジニアリングでNotNull反映されず

こんにちは、元質問者です。

CentOS 環境にて検証いただき、ありがとうございます。
再現したとのことですので、改善されることを期待しております。

# 評価版での試用にもかかわらず、すばやい対応で、感動しております。
tkouno
投稿日時: 2007-9-26 9:39
EA Administrator
投稿: 3939

Re: MySQLのリバースエンジニアリングでNotNull反映されず

ご指摘のtimestamp型の件につきましては
昨日リリースのビルド817で修正されました。
ご迷惑をおかけし申し訳ございませんでした。

なお、CentOSの件については、優先度などの関係で
ビルド817では未着手の状況です。引き続きご迷惑をおかけし申し訳ございません。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ