如何检查模式是不是由 <jdbc:embedded-database> 标签创建
Posted
技术标签:
【中文标题】如何检查模式是不是由 <jdbc:embedded-database> 标签创建【英文标题】:how to check schema is created or not by <jdbc:embedded-database> tag如何检查模式是否由 <jdbc:embedded-database> 标签创建 【发布时间】:2011-02-23 09:35:57 【问题描述】:我正在使用标签来创建我的 hsql 模式。我的 spring.xml 文件如下所示:
<jdbc:embedded-database id="dataSource" type="HSQL">
<jdbc:script location="classpath:schema.sql" />
<!-- <jdbc:script location="classpath:test-data.sql" /> -->
</jdbc:embedded-database>
<bean id="adapterDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" depends-on="dataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:file:data/db/lmex_adapter_moodle_db" />
<property name="username" value="SA" />
<property name="password" value="" />
</bean>
我的 sql 架构文件是
create schema lmex_adapter_moodle_db AUTHORIZATION DBA;
set schema lmex_adapter_moodle_db;
drop table moodle_login_credentials if exists;
CREATE TABLE moodle_login_credentials (
moodle_login_credentials_id varchar(40) NOT NULL,
moodle_username varchar(45) NOT NULL,
moodle_password varchar(45) NOT NULL,
host_name varchar(45) DEFAULT NULL,
port_number varchar(45) DEFAULT NULL,
database_name varchar(45) DEFAULT NULL
)
当我运行我的应用程序时,它毫无例外地运行顺利,但是当我单击提交按钮并且操作在有查询的控制器上进行时
select * from moodle_login_credentials
给我一个例外:
java.sql.SQLException: 找不到表 在语句 [select * from moodle_login_credentials]
所以我如何检查我的架构文件是否已成功创建,如果是,那么为什么我会得到这个以及如何解决这个异常。
请帮我解决这个问题
谢谢
【问题讨论】:
【参考方案1】:由于您使用的是基于文件的 HSQL,因此您可以查看生成的文件:
// this file contaions all executed DDL statements
data/db/lmex_adapter_moodle_db.script
// this file contaions all executed queries
data/db/lmex_adapter_moodle_db.log
(路径相对于执行目录)
【讨论】:
以上是关于如何检查模式是不是由 <jdbc:embedded-database> 标签创建的主要内容,如果未能解决你的问题,请参考以下文章