问题标签 [h2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用 ORMLite 准备查询的 SQL 异常
我正在使用 ORM (ORMlite) 并且我的所有调用都运行良好,直到出现以下错误。
线程“main”org.h2.jdbc.JdbcSQLException 中的异常:SQL 语句中的语法错误“SELECT * FROM”“STORIES”“WHERE”“TITLE”“='Deepcut case 导致'NOT FOLLOWED[*]''”;SQL 语句:SELECT * FROM
Stories
WHEREtitle
= '深度案例导致'未遵循'' [42000-152] at org.h2.message.DbException.getJdbcSQLException(DbException.java:327) at org.h2.message.DbException.get(DbException.java:167) at org.h2.message.DbException.get(DbException.java:144) 在 org.h2.message.DbException.getSyntaxError(DbException.java:179) 在 org.h2.command.Parser.getSyntaxError(Parser.java:480)在 org.h2.command.Parser.prepareCommand(Parser.java:229) 在 org.h2.engine.Session.prepareLocal(Session.java:426) 在 org.h2.engine.Session.prepareCommand(Session.java:374 ) 在 org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1093) 在 org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:71) 在 org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:601) 在 com.j256.ormlite.stmt.mapped.MappedPreparedStmt.compile(MappedPreparedStmt.java:44) 在 com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:83) 在 com.j256.ormlite .stmt.StatementExecutor.buildIterator(StatementExecutor.java:169) 在 com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:119) 在 com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:189 )119) 在 com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:189)119) 在 com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:189)
我对出了什么问题感到困惑。我从以下几行调用搜索:
sql - 将 varchar 投射到日期
我为一个小项目使用 H2 数据库,所有字段都是 varchar
对于查询,我必须将字符串转换为日期,所以我尝试了
但是有一个错误
代码 :
错误代码 90009,SQL 状态 90009:无法解析日期常量“2011-02-21-15.22.07”,原因:“java.lang.NumberFormatException:对于输入字符串:”“21-15.22.07”“”;
任何的想法?
谢谢
android - 是否可以在带有 h2 或 sybase 数据库的 android 上使用 ormlite?
我已经使用 sqlite、h2 和 sybase 数据库在 android 上实现了一个 database-testapp。对于 sqlite,我还实现了 ormlite 接口。现在我很感兴趣是否可以在 android 上使用 ormlite 也可以使用 h2 或 sybase。
macos - 为什么 H2 1.1.117 在 Mac OS X 上性能较差?
在具有 400k 行的表上运行相同的查询(带有几个 INNER JOIN 的 SELECT)时,在 Mac OS X 上比在 Linux 或 Windows 7 上花费的时间几乎长 30 倍。当然,硬件配置不同,但没有区别足以保证如此大的差异。我能够在几台运行 Mac OS X 10.6 的计算机上重现性能问题。奇怪的是,在长查询执行过程中杀死 H2 并让 H2 在下次启动时修复数据库后,我得到了一次预期的性能。但是,我无法始终如一地重现这一点。
我在 Mac OS X 上注意到的是,在提交查询几秒钟后,CPU 和磁盘使用率几乎都降到了零,并且只有在返回查询结果之前才回升。
测试计算机安装了以下 Java 版本:
- Mac OS X:Java(TM) SE 运行时环境(内部版本 1.6.0_24-b07-334-10M3326)Java HotSpot(TM) 64 位服务器 VM(内部版本 19.1-b02-334,混合模式)
- Linux:Java(TM) SE 运行时环境(构建 1.6.0_20-b02)、Java HotSpot(TM) 64 位服务器 VM(构建 16.3-b01,混合模式))
- Windows:Java(TM) SE Runtime Environment (build 1.6.0_24-b07) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02,混合模式)
所有计算机都运行 H2 1.1.117。虽然我知道这个版本已经很老了,但我现在更愿意继续使用它,但我需要解决这个明显特定于平台的性能问题。我用谷歌搜索了错误报告,但没有找到任何相关的东西。
git - h2database 作为 git repo
我非常喜欢H2!我也喜欢并使用 git。我无法将 svn 存储库转换为 git repo,所以我下载了源并将它们推送到github。
但是,如果您在 git repo(使用 github)中发布 h2 源代码,那就太好了。我将删除我的“fork”,并将 fork 你的 github 存储库。我想阅读资料并尝试做一些提交。
谢谢!
database-replication - 从 H2 数据库生成构建脚本的任何简单方法?
让我们想象一下,一个人创建了一个带有表、索引等的 H2 数据库... 有没有一种简单的方法可以提取 SQL 脚本以在另一个 H2 数据库中重新创建该数据库的结构?
我不是指表、索引等的内容……我只是对数据库的一般结构感兴趣,以便在其他地方复制它。谢谢。
java - 加载位于 H2 数据库的类路径中的 CSV 文件
出于测试目的,我想使用 SQL 脚本和 CSV 文件创建和填充一些表。
所以我创建了一个这样的 SQL 脚本:
该foo.csv
文件存在,并且位于src/test/resources
.
当此脚本在 Eclipse 上运行时(其中src/test/resources
定义为源目录,因此包含在类路径中),我收到以下错误:
我做错什么了?如何正确使用classpath:
协议加载 CSV 文件?
如果我输入文件的完整路径(如... CSVREAD('C:\my-project\src\test\resources\foo.csv');
),那么它可以工作。但这不是我想做的原因:)
请注意,我使用最新版本的 H2 ( 1.3.153 ),因为我想使用该classpath:
协议来加载我的文件。
ruby - 有没有办法在没有 JRuby 的情况下从 Ruby 连接到 H2 数据库?
我正在使用 ruby 1.8.7 和 WATiR 测试一个 Web 应用程序,我想尽可能轻松地连接到 H2 数据库,我只能找到有关 JDBC 访问的信息。如果有一种方法可以从 Ruby 中使用 JRuby 来执行此操作,那没关系,但我需要使用 Ruby 主要是因为我的 WATiR 代码是用它编写的,并且希望保持不变。
将考虑所有可能的解决方案,但我正在寻找一些简单的方法,因为我的数据库知识有限,我需要从 Ruby/WATiR 访问数据库(读取和写入)以测试 Web 前端显示的内容。
编辑:我消除了一些我的无知,现在我知道 JDBC 是一个用于 DB 访问的 Java API,所以我现在正在寻找连接到 H2 数据库的任何方法,以便我的 Ruby/WATiR 脚本可以访问它。
背景:我有一些使用 DBI 和 Sequel gems 的经验,并且我安装了 Rails(所以我可以开始玩 ActiveRecord,主要是),但愿意学习新事物来解决这个问题。
假设我不是一个出色的 Java 编码器。我以前也从未考虑过使用 JRuby,所以我并不完全熟悉它的工作原理。
解决方案 我最终让两人互相交谈,这主要归功于 Thomas Mueller 在下面的回答。我安装了 PostgreSQL ODBC 驱动程序,让 Sequel 工作并使用 ODBC 连接。使用 Sequel 的 PG 适配器连接到 H2 PG 服务器会导致一些我仍在处理的语法错误。我还没有尝试使用 DBI 进行连接,但我会尝试,因为它可以让我在需要时更好地控制语法。也非常感谢 Jeremy Evans 帮助解决了 activerecord-jdbc-adapter 和 Sequel(我的 ruby 路径中的 pg.rb 文件)之间的冲突,以及管理 Sequel。这没有被列为答案,因此我可以在向与我处于相同情况的人提供反馈的同时给予那些回答的人的信任。
我已经安装了 pg(不是 ruby-pg)、sequel、dbi、dbd-odbc(加上一个手动文件修复,你可以向我询问详细信息)、锄头和卸载的 activerecord-jdbc-adapter。
h2 - H2 database throwing null pointer exception
I am new to H2 database, I ran into a particular problem where I was running a function named format.
There are chances of sumValue getting null value.
when I am running a query it is throwing a following exception
I went through the documentation and was able to figure out that the aruguments should be of wrapper class hence I changed to double!
Can anyone of you please help me to figure out where the actual problem is?
Thanking you
With Regards Phani Kumar
java - 如何在 H2 数据库上管理 XmlType
我使用 H2 数据库进行单元测试。在我的应用程序中,我有一个名为FooXml
定义的实体对象:
因此,为了从数据库中读取/写入 XML 内容,我创建了自己的 XMLType my.app.common.HibernateXMLType
,它实现了org.hibernate.usertype.UserType
. 方法nullSafeSet
和nullSafeGet
在那里定义。
现在,我想为我的测试使用 H2 内存数据库,并且一些测试正在使用这个FooXml
类。由于 H2 不支持 Oracle XmlType
,我必须自定义我的my.app.common.HibernateXMLType
. 例如,我添加了该部分:
我对这种方法有几个担忧:
- 我在应用程序的生产代码中添加了与测试目的直接相关的代码(即不在测试代码中);
- 由于此类依赖于
org.h2.jdbc.JdbcConnection
,因此我必须在我的 WAR 包中添加 h2-database 依赖项。
问题:
- 这是解决我的问题的最佳方法,还是有更好的方法?
- 有没有办法告诉 Hibernate 使用另一种类型(
my.app.common.HibernateXMLTypeForH2
而不是my.app.common.HibernateXMLType
)进行测试?
ps:在H2数据库中创建我的表的脚本如下:
技术细节:H2 Database v1.3.153、JUnit 4.8.1、Java 1.6、Hibernate 3.2.2、Oracle 10g 用于非测试环境。