powerDesigner之reverse engineer

本文介绍了解决PowerDesigner从SQLServer数据库导入表时遇到“unabletolistusers”错误的方法。关键在于正确设置DBMS属性。

      很久没有用PoswerDesigner,想整理一些文档,要从sqlserver数据库中导入某个表到物理视图中,试了几次都出现“unable to list users" 等错误,后来才想起应该先设置在“change current DBMS"中设置DBMS的属性为sqlserver。终于成功了!

<think>嗯,用户问的是PowerDesigner里为什么没有varchar类型,或者有什么替代方法。首先,我需要回忆一下PowerDesigner的数据建模功能。PowerDesigner主要支持哪些数据库呢?可能它更倾向于使用标准化的数据类型,比如根据不同的DBMS来调整。比如引用里提到,像VARCHAR可能在具体数据库中有不同的实现,而PowerDesigner可能用更通用的类型来代替,比如Character Varying或者String。 然后,用户提到的引用[3]里提到了PowerDesigner的企业架构模型,可能它在数据类型的处理上更注重通用性,而不是特定数据库的具体类型。所以,可能VARCHAR没有被直接列出,但可以通过修改物理数据模型中的对应类型来实现,比如使用CHARACTER VARYING或者直接映射到目标数据库的VARCHAR。 另外,替代方法可能包括手动调整数据类型,或者使用域(Domain)来统一管理自定义类型。例如,定义一个字符串域,然后在不同的数据库里设置对应的实际类型,比如在Oracle里是VARCHAR2,在MySQL里是VARCHAR。这样用户就能灵活适应不同数据库的需求了。 可能还需要检查PowerDesigner的版本是否影响了数据类型的显示,或者是否有插件或扩展可以启用更多的数据类型支持。另外,用户可能需要了解不同数据库的数据类型对应关系,确保在生成DDL时能正确转换。 总结下来,PowerDesigner不支持直接使用VARCHAR可能是因为它采用标准化的类型名称,而实际使用时需要根据目标数据库进行映射。替代方法包括手动修改物理模型的数据类型,使用域定义,或者依赖自动转换工具。</think>### PowerDesigner中VARCHAR类型的处理原因及替代方案 #### 一、PowerDesigner不支持VARCHAR类型的原因 1. **标准化与通用性优先** PowerDesigner作为企业级建模工具,其核心设计理念是支持**跨数据库平台兼容性**。在数据建模时,它倾向于使用符合ISO SQL标准的通用数据类型(例如`CHARACTER VARYING`),而非特定数据库的专有类型(如`VARCHAR`)。这种设计可确保模型在不同数据库系统中无缝迁移[^3]。 2. **物理模型与逻辑模型的分离** - **逻辑模型**:定义与数据库无关的抽象数据类型(如`String`)。 - **物理模型**:根据目标数据库(如Oracle、MySQL)自动映射为具体类型(如`VARCHAR2`、`VARCHAR`)。 用户可能在逻辑模型中未直接看到`VARCHAR`,但在物理模型生成时会自动适配。 3. **历史版本兼容性** 部分旧版PowerDesigner可能未更新某些数据库的最新类型,需通过扩展或手动配置支持。 --- #### 二、替代方案与操作方法 1. **直接使用物理模型映射** - 在物理数据模型(PDM)中,手动将字段类型设置为目标数据库支持的`VARCHAR`。 - 示例:在Oracle中设置为`VARCHAR2`,在MySQL中设置为`VARCHAR`。 2. **通过域(Domain)定义统一类型** - 创建自定义域(Domain),命名为`VARCHAR`,设置其物理类型为`CHARACTER VARYING`。 - 在实体属性中引用该域,实现集中管理[^2]。 3. **使用脚本或插件扩展** - 通过PowerDesigner的自动化脚本(VBScript)修改生成的DDL,将`CHARACTER VARYING`替换为`VARCHAR`。 - 安装数据库特定的插件以增强类型支持。 --- #### 三、实际应用示例 1. **逻辑模型定义** ```sql -- 逻辑模型中使用String类型 Entity Customer { Name : String(50) } ``` 2. **物理模型映射(以MySQL为例)** ```sql -- 生成的DDL自动转换为VARCHAR CREATE TABLE Customer ( Name VARCHAR(50) ); ``` --- #### 四、注意事项 - **数据库差异处理**:需检查目标数据库的`VARCHAR`长度限制(如Oracle的`VARCHAR2(4000)`)。 - **性能与存储优化**:即使存储空间相同,合理设置长度可提升可读性和约束有效性[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值