如何阻止使用 HSQL?
How can I stop HSQL from being used?
我正在尝试使用 基本 mysql jdbc 连接,但出现 HSQLDB 错误。
None 的配置表明我想使用 HSQL。
错误:
org.hsqldb.HsqlException: user lacks privilege or object not found: <(mytable)>
- 这个table存在
- 我在 mySQL Workbench
中使用相同的查询和 user/password
如何避免使用 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());
希望不大,但请检查您的 pom.xml
并删除 hsqldb
依赖项(如果存在)。
或者尝试仅在 test
范围内使用它。
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.4.0</version>
<scope>test</scope>
</dependency>
Spring 喜欢自动配置数据源。
我需要设置自动配置以忽略 application.properties 文件中的一些 类:
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
我正在尝试使用 基本 mysql jdbc 连接,但出现 HSQLDB 错误。
None 的配置表明我想使用 HSQL。
错误:
org.hsqldb.HsqlException: user lacks privilege or object not found: <(mytable)>
- 这个table存在
- 我在 mySQL Workbench 中使用相同的查询和 user/password
如何避免使用 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());
希望不大,但请检查您的 pom.xml
并删除 hsqldb
依赖项(如果存在)。
或者尝试仅在 test
范围内使用它。
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.4.0</version>
<scope>test</scope>
</dependency>
Spring 喜欢自动配置数据源。
我需要设置自动配置以忽略 application.properties 文件中的一些 类:
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration