返回介绍

Creating the database tables 创建数据库表

发布于 2025-02-24 21:53:47 字数 1471 浏览 0 评论 0 收藏 0

下面是创建数据库表最简单的办法:

  • 把 activiti-engine 的 jar 放到 classpath 下
  • 添加对应的数据库驱动
  • 把 Activiti 配置文件 (activiti.cfg.xml) 放到 classpath 下, 指向你的数据库(参考 数据库配置 章节)
  • 执行 DbSchemaCreate 类的 main 方法

不过,一般情况只有数据库管理员才能执行 DDL 语句。 在生产环境,这也是最明智的选择。SQL DDL 语句可以从 Activiti 下载页或 Activiti 发布目录里找到,在 database 子目录下。 脚本 也包含在引擎的 jar 中(activiti-engine-x.jar), 在 org/activiti/db/create 包下(drop 目录里是删除语句)。 SQL 文件的命名方式如下

activiti.{db}.{create|drop}.{type}.sql

其中 db 是 支持的数据库 , type 是

  • engine: 引擎执行的表。必须。
  • identity: 包含用户,群组,用户与组之间的关系的表。 这些表是可选的,只有使用引擎自带的默认身份管理时才需要。
  • history: 包含历史和审计信息的表。可选的:历史级别设为 none 时不会使用。 注意这也会引用一些需要把数据保存到历史表中的功能(比如任务的评论)。

MySQL 用户需要注意: 版本低于 5.6.4 的 MySQL 不支持毫秒精度的 timestamp 或 date 类型。 更严重的是,有些版本会在尝试创建这样一列时抛出异常,而有些版本则不会。 在执行自动创建/更新时,引擎会在执行过程中修改 DDL。 当使用 DD L 时,可以选择通用版本和名为 mysql55 的文件。 (它适合所有版本低于 5.6.4 的情况)。 后一个文件会将列的类型设置为没有毫秒的情况。

总结一下,对于 MySQL 版本会执行如下操作

  • <5.6: 不支持毫秒精度。可以使用 DDL 文件(包含 mysql55 的文件)。可以实现自动创建/更新。
  • 5.6.0 - 5.6.3: 不支持毫秒精度。无法自动创建/更新。建议更新到新的数据库版本。如果真的需要的话,也可以使用 mysql 5.5。
  • 5.6.4+:支持毫秒精度。可以使用 DDL 文件(默认包含 mysql 的文件)。可以实现自动创建、更新。

注意对于已经更新了 MySQL 数据库,而且 Activiti 表已经创建/更新的情况, 必须手工修改列的类型。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文