首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java通用JDBC SQL查询策略在单元测试中的使用HSQLDB和运行时使用MySQL

Java通用JDBC SQL查询策略在单元测试中的使用HSQLDB和运行时使用MySQL
EN

Stack Overflow用户
提问于 2020-07-03 16:45:15
回答 2查看 74关注 0票数 0

我正在开发Java Vert.x3应用程序。我使用HSQLDB进行内存DB测试,使用MySQL 8.0.20进行运行时测试。在部署vertx verticle时,它会初始化数据库和表。由于这是一个常见的代码,并且HSQLDB和MySQL之间存在不同的SQL语法,更可笑的是,HSQLDB将所有属性名称大写,我必须用双引号将属性引起来才能使用小写。我想知道如何实现这一点。以下是我的问题:

(1) HSQLDB使用IDENTITY关键字创建内存数据库表。这会在MySQL DB中导致运行时错误,因为"IDENTITY“不是有效的关键字。这构成了我现在面临的挑战。

(2)如果不可能有一个同时满足MySQL和HSQLDB的通用SQL语法,那么基于java应用程序运行时配置文件拆分这个公共执行路径的最佳方法是什么,因为这个DB初始化是在应用程序的核心verticle的start函数中完成的?

任何建议和见解都是值得感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-03 17:50:10

解决方案:放弃HSQLDB,使用带有database_to_upper=false选项的H2。

票数 0
EN

Stack Overflow用户

发布于 2020-07-03 18:17:44

您可以创建具有MySQL兼容模式的HSQLDB数据库(将;sql.syntax_mys=true附加到JDBC URL。在此模式下,您可以执行以下操作:

使用CREATE TABLE的MySQL语法。HSQLDB将MySQL的AUTO_INCREMENT关键字理解为身份的别名。它还理解所有其他特定于MySQL的语法。

列名的大写实际上不是问题。列名大写后,您可以在SELECT语句中使用任何不带引号的大小写。这意味着您可以在HSQLDB上运行与MySQL相同的查询。

请参阅http://hsqldb.org/doc/2.0/guide/compatibility-chapt.html#coc_compatibility_mysql

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62711738

复制
相关文章

相似问题

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