Spring boot Flyway&;MyBatis:Spring引导的Java配置
我正在尝试使用Spring Boot、HSQLDB、Flyway和MyBatis编写一个web应用程序。我开始时没有MyBatis,每次删除HSQLDB时,Flyway都会愉快地创建数据库 在我添加MyBatis之后,一切都很好,直到我不得不更改初始SQL文件并删除数据库。现在我无法启动web应用程序。似乎Flyway和MyBatis在某种程度上是相互依赖的 我的数据库配置:Spring boot Flyway&;MyBatis:Spring引导的Java配置,spring-boot,mybatis,flyway,Spring Boot,Mybatis,Flyway,我正在尝试使用Spring Boot、HSQLDB、Flyway和MyBatis编写一个web应用程序。我开始时没有MyBatis,每次删除HSQLDB时,Flyway都会愉快地创建数据库 在我添加MyBatis之后,一切都很好,直到我不得不更改初始SQL文件并删除数据库。现在我无法启动web应用程序。似乎Flyway和MyBatis在某种程度上是相互依赖的 我的数据库配置: @Configuration public class DatabaseConfiguration { @Bean
@Configuration
public class DatabaseConfiguration {
@Bean
public DataSource dataSource() { ... }
@Bean
public DataSourceTransactionManager transactionManager() { ... }
@Bean
public static MapperScannerConfigurer mapperScannerConfigurer() { ... }
@Bean
public DataSourceInitializer dataSourceInitializer() throws Exception { ... }
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean() throws Exception { ... }
@Bean
public SqlSessionTemplate sqlSessionTemplate() throws Exception { ... }
}
我完全理解MapperScannerConfigure
,SqlSessionFactoryBean
和SqlSessionTemplate
都来自MyBatis,所有Flyway的东西都由Spring Boot完成。据我所知,Flyway需要一个数据源
,MyBatis需要一个数据库,其中Flyway脚本已经运行,以允许初始化映射器
我得到的错误是
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: MY_TABLE
### The error may exist in file [/home/work/Eclipse/com.sjngm.hs/target/classes/sqlmap/MyTableMapper.xml]
### The error may involve com.sjngm.hs.dao.mapper.MyTableMapper.getByName
### The error occurred while executing a query
### SQL: SELECT * FROM MY_TABLE WHERE Name = ?
### Cause: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: MY_TABLE
请注意,在整个日志文件中没有任何迹象表明Flyway已经做了一些事情。此外,我在HSQLDB的文件中找不到任何CREATE TABLE
,这使得上面的错误表示它找不到TABLE MY_TABLE
我已经尝试将dataSource()
移动到一个新的配置类中,但没有任何帮助
我需要做些什么来解决这种间接依赖关系?是什么帮助了
dataSource()
a@FlywayDataSource