假设我想为我的集成testing创build和使用H2数据库。 Maven有一个运行testing的命令: mvn test 。 有没有办法告诉maven启动H2数据库服务器进行testing,并在完成时停止它? 我想像这个工作类似于我可以通过Maven命令( mvn tomcat:run ) mvn tomcat:run 。 对不起,如果这个问题是荒谬的,我仍然围绕着新的概念。
是否有一个表有一个auto_incrementing BIGINT ID。 它可以像这样定义 id bigint auto_increment 但这没有效果(它不会自动增加)。 我想插入除ID字段外的所有字段 – ID字段应由DBMS提供。 或者我需要调用一些东西来增加ID计数器?
我想知道如何初始化一个数据库,而不必创build一个XML文件。 我已经使用这种初始化工作正常,但在我目前的情况下,我不想创build一个XML: <jdbc:initialize-database data-source="dataSource"> <jdbc:script location="classpath:com/foo/sql/db-schema.sql"/> <jdbc:script location="classpath:com/foo/sql/db-test-data.sql"/> </jdbc:initialize-database> 我知道我可以创build一个embedded式数据库: EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); EmbeddedDatabase db = builder.setType(H2).addScript("my-schema.sql").addScript("my-test-data.sql").build(); 就我而言,数据库和模式是使用Liquibase创build的。 我只想用Spring和我的自定义数据集进行初始化,而不必每次都创build一个新的XML文件。 可能吗?
首先我想说的是对于H2数据库来说是新的。 我需要在h2数据库中执行一个sql脚本文件。 我有一个脚本文件test.sql,我想在h2数据库中执行此操作。 可能吗?
我想在网页浏览器中查看由Spring启动的H2数据库的内容,感谢以下configuration: <jdbc:embedded-database id="dataSource" type="H2" /> <jdbc:initialize-database data-source="dataSource"> <jdbc:script location="classpath:db/populateDB.sql"/> </jdbc:initialize-database> 我在日志中search了JDBC URL: DEBUG osjdSimpleDriverDataSource – Creating new JDBC Driver Connection to [jdbc:h2:mem:dataSource;DB_CLOSE_DELAY=-1] 所以我可以填写连接forms如下: 但不幸的是,数据库仍然是空的,而不应该由于populateDB.sql脚本。 任何想法? 谢谢!
你的Spring集成testingconfiguration看起来像使用embedded式h2数据源和JUnit(可选)? 我第一次尝试SingleConnectionDataSource基本上工作,但在更复杂的testing失败,你需要在同一时间几个连接或暂停交易。 我认为基于TCP的服务器模式下的 h2也可能工作,但这可能不是用于内存中临时embedded式数据库的最快通信模式。 有什么可能性和它们的优点/缺点? 另外,你如何创build表/填充数据库? 更新:让我们指定一些对这些testing非常重要的具体要求。 数据库应该是临时的,并在内存中 对于速度要求,连接可能不应该使用tcp 如果我可以使用数据库工具在debugging过程中检查数据库的内容,那将会很好 我们必须定义一个数据源,因为我们不能在unit testing中使用应用程序服务器数据源
在某些情况下,我得到以下错误 当一个不同的线程通过批量上传操作填充了很多用户时,我试图查看不同网页上所有用户的列表。 列表查询引发以下超时错误。 有没有办法设置这个超时,以便我可以避免这个超时错误。 Env:h2(最新),Hibernate 3.3.x Caused by: org.h2.jdbc.JdbcSQLException: Timeout trying to lock table "USER"; SQL statement: [50200-144] 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) at org.h2.table.RegularTable.doLock(RegularTable.java:482) at org.h2.table.RegularTable.lock(RegularTable.java:416) at org.h2.table.TableFilter.lock(TableFilter.java:139) at org.h2.command.dml.Select.queryWithoutCache(Select.java:571) at org.h2.command.dml.Query.query(Query.java:257) at org.h2.command.dml.Query.query(Query.java:227) at org.h2.command.CommandContainer.query(CommandContainer.java:78) at org.h2.command.Command.executeQuery(Command.java:132) at org.h2.server.TcpServerThread.process(TcpServerThread.java:278) at org.h2.server.TcpServerThread.run(TcpServerThread.java:137) at java.lang.Thread.run(Thread.java:619) at org.h2.engine.SessionRemote.done(SessionRemote.java:543) at org.h2.command.CommandRemote.executeQuery(CommandRemote.java:152) at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96) at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:342) at […]
我有一些关于H2DB的问题。 我有H2DB数据库存储在文件中的数据,我有3个文件test.18.log.db,test.data.db,test.index.db。 我想要得到像我使用mysqldump时的sql转储文件。 这是可能的? 感谢所有!
我有两个表之间的1:1关系。 我想查找表A中没有表B中相应行的所有行。我使用这个查询: SELECT id FROM tableA WHERE id NOT IN (SELECT id FROM tableB) ORDER BY id desc id是两个表中的主键。 除了主键索引之外,我还有一个tableA(id desc)索引。 使用H2(Javaembedded式数据库),这将导致tableB的全表扫描。 我想避免全表扫描。 我怎样才能重写这个查询来快速运行? 我应该怎样指数?
(我已经看到H2数据库在内存中 – 通过Spring / Hibernate问题的初始化模式 ;这里不适用。) 我想知道H2中是否有一个设置可以让我在连接的时候自动创build一个模式。 如果有帮助,我只对内存情况感兴趣。 H2支持URL末尾的各种以分号分隔的修饰符,但是我没有find自动创build模式的修饰符。 有这样的function吗?