我已经搜索这个解决方案好几天了,但我想不出一个解决方案。
我有一个JavaSpring启动应用程序,应该与数据库交互,为了便于使用和存储,我选择了一个sqlite数据库文件。我的应用程序托管在windows服务器2019上的tomcat 8.5上。
启动时,我的应用程序应该读取sqlite数据库,但我得到了错误: [SQLITE_ERROR] SQL error or missing database (no such table: users_moved_group)
错误显示应用程序找不到数据库,但它确实存在,我对路径进行了一千次的双重检查(我还尝试了绝对路径和相对路径),如下所示:
spring.datasource.url = jdbc:sqlite:C:/Tomcat 8.5/db/workday.sqlite
如你所见,一切都正常。因此,我猜测tomcat服务无法读取该文件,但它位于tomcat文件夹中,特别是为了避免此类错误(在windows服务器和tomcat的干净安装中,它可以正常工作)。
这个问题只发生在三个虚拟机中的一个,不是我的,但我仍然拥有几乎所有的管理员权限。
我在这里完全迷路了,我所做的任何事情都不会让tomcat看到该文件,从而允许我的应用程序读取它。
下面是读取数据库的示例代码:
公共void cleartable(){
Connection connection;
String usersMovedGroupTable = "users_moved_group";
String sqlExpression = "SELECT * FROM " + usersMovedGroupTable;
List<UsersMovedGroup> usersMovedGroupList = new ArrayList<>();
try {
connection = DriverManager.getConnection(applicationProperties.getDatasourceUrl());
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sqlExpression);
while(rs.next())
{
UsersMovedGroup user = new UsersMovedGroup(rs.getString("ump_date"), rs.getString("ump_user_id"), rs.getString("ump_user_login"), rs.getString("ump_group_id"), rs.getString("ump_group_name"));
usersMovedGroupList.add(user);
}
} catch (SQLException e) {
logger.error("Error connecting to SQLite database : " + e.getMessage());
}
起初我用的是 jdbcTemplate
发出sql请求,但我将其更改为 Statement
等等,但结果是一样的。
如果需要,这里是我的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
<relativePath/>
</parent>
<groupId>com.sqlite</groupId>
<artifactId>user-moved-ad-group-event-hook</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>user-moved-ad-group-event-hook</name>
<description>Detect user changed of AD group</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<!-- SQLite -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.34.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.4</version>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<activatedProperties>dev</activatedProperties>
</properties>
</profile>
<profile>
<id>lyvoc</id>
<properties>
<activatedProperties>lyvoc</activatedProperties>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<activatedProperties>prod</activatedProperties>
</properties>
</profile>
</profiles>
</project>
1条答案
按热度按时间5gfr0r5j1#
您是否尝试过usersmovedgrouptable=“schema\u name.database\u name”;