Enterprise Architect 修改模板,适应mysql生成ddl
版本:Enterprise Architect 12
前言:Enterprise Architect可以导入DDL,直接生成相应的图像,通过可视化的界面给呈现相应的数据库,但是通过实验,发现它对mysql数据库的支持非常有限,所以本人对之前的模板进行了修改,从而导出的DDL可以直接导入数据库中建表
1、导入mysql的数据源
2、建立mysql的主外键关系
3、修改ddl模板
细解:
1、Enterprise Architect读取的数据源,真正所在的位置在C:\Windows\SysWOW64\odbcad32.exe上面,
我们安装mysql 64位数据源ODBC的时候安装到了C:\Windows\System32\odbcad32.exe这里,所以出现了不匹配
解决方案:
参考网上的,下载mysql odbc 32位的,然后打开C:\Windows\SysWOW64\odbcad32.exe的文件,添加相应的数据源
2、mysql的主外键关系
工具箱中拖入Assosition,从包含外键的表指向来源的表,然后编辑相应的字段
3、ddl模板
出现问题:
如果字段不需要定义长度,例如timestamp,则有个0
SET FOREIGN_KEY_CHECKS=0后面没有分号,同1
没有default值
有对于数据库名的强引用,不方便加表
comment值被隐藏
解决:
修改模板
菜单栏–>包–>数据库工程–>修改ddl模板–>找相应的类并替换
comment
在导出时 格式–>评语水平–>全部
DDLColumnDefinition
%PI=" "%
%DDLName("EA", "COLUMN", "", "INCLUDE_SURROUND")%
%DDLDataType%
$Type = %columnProperty:"TYPE"%
$Default = %columnProperty:"DEFAULT"%
$Find = ""
%if $Type != "ENUM" and $Type != "SET"%
%if $Default != ""%
$Default = "DEFAULT " + $Default
%endIf%
%endIf%
%if columnBoolProperty:"ZEROFILL" == "T"%
ZEROFILL
%endIf%
%if columnBoolProperty:"UNSIGNED" == "T"%
UNSIGNED
%endIf%
%if columnBoolProperty:"NULLABLE" == "T"%
%if ddlOptionGenerateNullable == "T"%
NULL
%endIf%
%else%
NOT NULL
%endIf%
%if columnBoolProperty:"AutoNum" == "T"%
AUTO_INCREMENT
%else%
%if $Default != ""%
$Default
%endIf%
%endIf%
%DDLColumnComment%
%PI("I", "")%
,
DDLDataType
%PI=""%
$Type = %columnProperty:"TYPE"%
$DBMS = %ddlTableDBMS%
$Size = %DDL_DATATYPE_SIZE($DBMS, $Type)%
$LENGTH = %columnProperty:"LENGTH"%
$Type
%if $Size=="1" and $LENGTH != "0" and $LENGTH != ""%
(
$LENGTH
)
%elseIf $Size=="2"%
(
%if columnProperty:"PRECISION