0

我在测试环境中使用 HSQLDB,提供脚本来创建表,然后导入要插入到模拟数据库中的测试数据。在生产级别,我们有 Microsoft SQL 服务器数据库。仍然 HSQLDB 给我这样的错误:

java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: GETDATE
20:17:48,283 ERROR [Appeal] [proceessAppeal] [Error] 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
    at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)
4

2 回答 2

1

不同的数据库支持不同的内置函数。hsqldb 没有像 mssql中的 GETDATE() 函数。它确实有一个等效的函数CURRENT_TIMESTAMP(),但你不能在它们之间重用相同的 SQL 代码。

如果你想这样做,你需要维护你的模式/查询的 2 个版本,或者(如果它足够微不足道,取决于你使用什么)只是做一个查找和替换。

于 2013-08-26T18:08:22.820 回答
0

也许你可以写一个自定义函数 getDATE(),看这个问题

我在集成测试中使用 hsqldb,在生产中使用 oracle。尽管 hsqldb 具有“SET DATABASE SQL SYNTAX ORA true”功能,但仍然不支持某些 SQL。因此,我尽可能少地避免使用不标准的 sql 函数,只使用 HSQLDB 进行一些插入/更新/查询测试(因此不需要一些 SQL 脚本)。

于 2013-08-27T01:02:50.630 回答