HSQL和MySQL的区别
Posted
技术标签:
【中文标题】HSQL和MySQL的区别【英文标题】:Difference in HSQL and MySQL 【发布时间】:2016-07-01 08:11:13 【问题描述】:我使用 mysql 作为我的应用程序数据库,但使用 HSQL 作为测试内存数据库。现在的问题是我有一个 SQL selectQuery,如下所示:
SELECT date(a.created_at) as record_date
FROM table a
现在,date() 是 MYSQL 中用于将 DateTime 转换为 Date 的函数,但在 HSQL 中,相同的函数是 to_date()。现在,我有一个方法可以将上述查询命中数据库并获取输出。
public Response dbQueryThroughJdbcTemplate(String selectQuery)
jdbcTemplate.query(selectQuery, RowMapper); //RowMapper maps output to Response
现在,我有一个测试方法来测试这个方法,
@Test
public void testDbQueryThroughJdbcTemplate()
Response response = dbQueryThroughJdbcTemplate(selectQuery);
TestCase.assertEquals(expected, response); // avoided the code for making expected object
现在,由于测试环境使用的是HSQL db,测试会抛出date方法不可用的错误。
如何解决这个问题,或者有什么更好的方法来解决这个问题?
【问题讨论】:
测试什么? HSQL 工作,你不需要测试它。测试你得到正确的结果,这与所使用的查询机制无关。如果问题是您需要完全更改查询:您不应该这样做。要么使用 MySQL,要么模拟数据库调用。 @Gimby,更新了问题以使其更清晰 正如我所说,您正在测试错误的东西。 MySQL 的 date 函数和 HSQL 的 date 函数可以工作,你不需要测试。您应该测试的是您的应用程序如何响应查询的结果,这允许您通过模拟数据库将其从测试中移除。 【参考方案1】:您可以尝试 HSQLDB 和 MySQL 都支持的替代方法
SELECT CAST(a.created_at AS DATE) as record_date FROM table a
【讨论】:
以上是关于HSQL和MySQL的区别的主要内容,如果未能解决你的问题,请参考以下文章
兼容 Postgres、MySQL、HSQL 的字节数组类型