问题描述
我正在尝试在我的 spring-boot 应用程序中将 sqlITE 设置为内存数据库。但是当我尝试查询数据库时,它给了我一个错误“没有这样的表”
有人可以推荐我做错了什么吗?我只需要在内存中使用 sqlITE,我们只在我们的项目中使用 jdbc。
这是我的代码:
application.properties
spring.datasource.url=jdbc:sqlite:memory
spring.datasource.username=
spring.datasource.password=
spring.datasource.platform=sqlite
spring.datasource.driver-class-name=org.sqlite.JDBC
MyRepo.java
@Repository
public class MyRepo{
@Autowired
private NamedParameterJdbcTemplate namedJdbc;
public String getUserName() throws Exception{
String userName = null;
String sql = "SELECT username FROM emp WHERE username=:name";
MapsqlParameterSource paramSource = new MapsqlParameterSource();
paramSource.addValue("name","tuser");
userName = this.namedJdbc.query(sql,paramSource,(rs) -> {
String name = null;
while (rs.next()) {
name = rs.getString("username").trim();
return name;
}
return null;
});
return userName;
}
}
UserDaoTest.java
@SpringBoottest
public class UserDaoTest {
@Autowired
private MyRepo rep;
@Test
public void testFindByname() throws Exception{
rep.getUserName();
}
}
我在 src/main/resources 下也有 schema.sql 和 data.sql 文件
schema.sql
DROP TABLE IF EXISTS emp;CREATE TABLE IF NOT EXISTS emp(username VARCHAR(20),empId BIGINT,PRIMARY KEY(empId) )
数据.sql
INSERT INTO emp(username,empId) VALUES ('tuser',1001);
我得到的异常:
PreparedStatementCallback; uncategorized sqlException for sql [SELECT username FROM Chats WHERE username=?]; sql state [null]; error code [1]; [sqlITE_ERROR] sql error or missing database (no such table: Chats)
解决方法
好吧,我是在黑暗中拍摄,但看起来您还需要将“聊天”表的架构添加到您的 schema.sql