如何检查模式是不是由 <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> 标签创建的主要内容,如果未能解决你的问题,请参考以下文章

php - 如何检查句子是不是由单个单词组成? [复制]

如何检查应用程序在发布模式下是不是运行良好?

如何检查系统是不是处于待机模式?

如何检查文件(由完整路径给出)是不是存在?节点js [重复]

我们如何检查iphone是不是处于待机模式?

OpenGL如何检查一个点是不是在由伯恩斯坦曲线组成的区域内