【问题标题】:How can I stop HSQL from being used?如何停止使用 HSQL?
【发布时间】:2018-01-11 19:29:18
【问题描述】:

我正在尝试使用 basic mysql jdbc 连接,但出现 HSQLDB 错误。

我的所有配置都没有表明我想使用 HSQL。

错误

org.hsqldb.HsqlException:用户缺少权限或找不到对象:

  • 此表存在
  • 我在 mySQL Workbench 中使用相同的查询和用户/密码

如何避免使用 hsql 并坚持使用 mysql

连接信息

db.url=jdbc:mysql://<HOST>/<SCHEMA>?autoReconnect=true
db.user=<USER>
db.pwd=<PW>
server.port=8000

applicationContext.xml

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="${db.url}" />
    <property name="username" value="${db.user}" />
    <property name="password" value="${db.pwd}" />
    <property name="initialSize" value="5" />
    <property name="maxActive" value="10" />
    <property name="minIdle" value="5"/>
    <property name="validationQuery" value="SELECT 1"/>
  </bean>

DAO 构造器

@Repository("myDAO")
public class myDAO implements DAOInterface{

    private DataSource dataSource;
    private JdbcTemplate jdbcTemplateObject;

    @Autowired
    public myDAO (DataSource ds) {
        this.dataSource = ds;
        this.jdbcTemplateObject = new JdbcTemplate(dataSource);
    }

查询:

final String sql = "<QUERY>";
List<DataObj> allData = jdbcTemplateObject.query(new PreparedStatementCreator() {
    @Override
    public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
        PreparedStatement ps = con.prepareStatement(sql);
        ps.setInt(1, param1);
        ps.setString(2,param2);
        ps.setInt(3, param3);
        ps.setString(4,param4);
        ps.setString(5,param5);
        return ps;
    }
}, new DataMapper());

【问题讨论】:

    标签: mysql spring jdbc hsqldb spring-jdbc


    【解决方案1】:

    这是一个长镜头,但请检查您的 pom.xml 并删除 hsqldb 依赖项(如果存在)。

    或者尝试仅在test 范围内使用它。

    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.4.0</version>
        <scope>test</scope>
    </dependency>
    

    【讨论】:

    • 这绝对是第一步。我还需要设置自动配置以忽略 application.properties 文件中的一些类:spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
    【解决方案2】:

    Spring 喜欢自动配置数据源。

    我需要设置自动配置以忽略 application.properties 文件中的一些类:

    spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-14
      • 2023-04-11
      • 2017-01-26
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 2012-11-06
      相关资源
      最近更新 更多