首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >现有项目和MySQL的基础介绍

现有项目和MySQL的基础介绍
EN

Stack Overflow用户
提问于 2015-03-09 12:00:42
回答 1查看 893关注 0票数 0

我们有一个现有的Java项目,它建立在MySQL数据库上,我们依赖MySQL特定的设置和迁移机制来实现我们的~100个表和~10个视图。我们不使用存储过程。

我们实现了自定义Java代码(甚至包括getRuntime().exec(…) ))将所有内容和各种Ant目标结合在一起,以调用数据库功能。有利于减少数据库依赖和维护与我们的核心业务逻辑无关的代码。我们目前正在评估清算基础,以方便数据库部署和迁移。

为此,我们下载了液化基版本3.2.2,并使用“generateChangeLog”命令为当前数据库模式创建了一个changelog文件。

现在,我们在生成的changelog文件中遇到了一些问题:

  1. 不可能将生成的changelog.xml文件部署到创建它的MySQL数据库中,因为液化基在安装SQL中生成‘DOUBLE(22)’而不是普通的‘DOUBLE’关键字。通过查找清算基础JIRA和一些谷歌搜索,这似乎是一个相当奇怪和老的问题,但很容易解决,但目前仍未解决。
  2. 将生成的changelog文件部署到H2数据库中会引发另一个问题:由清算库生成的主键语句不适合H2数据库。

现在有一些关于这种方法的问题:

  1. 我们预计数据库独立性将成为清算基础的主要目标之一,但似乎并非如此。还有其他人遇到过类似的问题吗?
  2. 从从现有数据库生成的changelog文件开始使用是否有些奇怪,而不是预期的用途呢?那么,从手动变更文件开始会不会是一种更合适的方法呢?
  3. 命令(在这里的另一篇文章中提到)是否是处理已找到的MySQL/H2相关问题的适当方式?
  4. 在上述情况下,您是否有将清算基础整合到现有项目中的其他最佳做法或资源?

您的建议是非常感谢的,谢谢提前!

致以亲切的问候,

史蒂文

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-09 18:00:28

清算库文档说明了它如何支持跨数据库的一小部分通用列类型。

http://www.liquibase.org/documentation/column.html

为了使脚本与数据库无关,将将下列“通用”数据类型转换为正确的数据库实现: 布尔货币UUID CLOB BLOB日期日期时间时间BIGINT 此外,指定java.sqlT.ypes.*类型也将转换为正确的类型。如果需要,可以包括精度。以下是一些例子: java.sql.Types.TIMESTAMP java.sql.Types.VARCHAR(255)

要支持特定的数据类型,最好的方法是在changelog中声明DB特定的属性。

parameters.html

代码语言:javascript
运行
复制
<property name="double.type" value="DOUBLE"     dbms="h2"/>
<property name="double.type" value="DOUBLE(22)" dbms="mysql"/>

<changeSet id="1" author="joe">
     <createTable tableName="${table.name}">
         <column name="id" type="int"/>
         <column name="val1" type="${double.type}"/>
         <column name="val2" type="${double.type}"/>
     </createTable>
</changeSet>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28941512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档