如何通过<jdbc:embedded-database>标记</jdbc:embedded-database>创建或不创建模式

时间:2011-02-23 09:35:58

标签: java mysql spring hsqldb

我正在使用标签来创建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 个答案:

答案 0 :(得分: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 

(路径相对于执行目录)